Змея / Говнокод #26382 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
https://twitter.com/indygreg/status/1218643088928698368

> If you care about low-latency processes (CLIs, frequently-called scripts in build systems, etc), you may want to avoid Python.

пацаны, оказывается питон не стоит использовать для реалтаймовых приложений, вы знали?

Запостил: Fike Fike, (Updated )

Комментарии (49) RSS

  • Примеры low-latency процессов тоже конечно бесподобны
    Ответить
    • >frequently-called scripts in build systems,
      ахахахаха, вот уж и правда лоу латенси процессы. Реалтайм процессы практически.

      Сборка серьезного проекта, занимающая дцать минут, наверняка упрется в скорость питонячего интерпретатора, когда питуховый скрипт будет эту сборку выкладывать
      Ответить
      • Да и питон довольно шустро стартует если 100500 библиотек не цеплять. 16мс на python3 -c "print('hello')" это не такой уж и лаг.

        Тот же повершелл намного дольше грузится, и ничего, юзают.
        Ответить
          • $time lua -e "print(1)"
            1
            
            real    0m0.001s
            user    0m0.001s
            sys     0m0.000s
            $time python3 -c "print(1)"
            1
            
            real    0m0.020s
            user    0m0.017s
            sys     0m0.003s


            Приходится признать, что питон соснул у луа не по децки
            Ответить
            • Ну ещё бы, монолитный бинарь с сишными фукциями против парсинга-конпеляции-интерпретации вороха файлов. Или у питона при старте никакие либы всё-таки не затягиваются?
              Ответить
              • да, питончик видимо на загрузку либлиотек время тратит, а парсить ведь и луа надо.

                Онестли, руби еще сильнее соснул, а perl соснул совсем немного, зато нод соснул еще больше руби.

                И так:
                1. Lua
                2. Perl
                3. Python
                4. Ruby
                5. Node

                >Или у питона при старте никакие либы всё-таки не затягиваются?

                сдлай strace, и увидиш хуиту типа
                stat("/usr/lib64/python3.7/site-packages", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0


                зы: можно еще с груви сравнить, но это будет избиение младенца же, бо jvm
                Ответить
                  • да, это правда. Даже небесное озеро мое запускает его так долго, что я успеваю это заметить.

                    Но помершел всё таки дотнетина, и в этом вопросе ближе к груви.

                    Хочу померить tcl, но не понимаю, как скормить ему команду в командную строку, а если я буду явно писить ем у в стдн, то получится нечестно
                    Ответить
                • Сделал
                  strace python3 -c "print(1)" > strace_python.txt 2>&1
                  strace lua -e "print(1)" > strace_lua.txt 2>&1
                  . Получил 5 килобайт для «Lua» и 45 (!) — для «Python».
                  Ответить
                  • ну вот и подумаешь десять раз прежде, чем ембеддить куда-то питон:)
                    Ответить
                    • А если взять реальный пример программы?

                      Если надо что-то быстро распечатать, можно самому интерпретатор написать.
                      if (!strcmp("print(1)", command)) puts("1");
                      else fprintf(stderr, "Invalid command.");
                      Ответить
                      • Реальные примеры бывают разные, и чаще всего скорость интерпретации не будет твоим ботлнеком, это правда.

                        Интерпретатор классный. Ты поддержал урезанное подмножество питона, но очень быстрое.

                        И кстати не только питона: ты целую пачку языков поддержал
                        Ответить
                        • > пачку языков поддержал
                          Если бы Остап узнал, что он играет такие мудреные партии, он крайне бы удивился.
                          Ответить
                          • Интерпретатор совершенно нового языка Говноскрипт вытеснит из продакшена все другие языки. Нам нем будут программировать суперкомпьюеры IBM и писать игрушки для iPhone. Книгу SICP перепишут на Говноскрипт, и именно Говноскрипт станут преподавать в Беркли и MIT.

                            GovoCode от JetBrains и VisualGovno от MS станут конкурировать за звание лучшего IDE для Говноскрипта, и только емаксовцы будут посмеиваться над ними в свои густые бороды, заменяя лисп в своем емаксе на Говноскрипт.

                            Переписанные с ноля на Говноскрипт Linux и Windows будут использовать его как главный язык своего API, а на хабре выйдет статья "как всё начиналось", где расскажут, как в далеком 2020-м на одном маленьком сайте пользователь 1024 начал разработку этого языка, а пользователь Gost добавил в него поддержку комментариев
                            Ответить
                      • Добавил поддержку однострочных комментариев, проверь.
                        if (!strncmp("#", command, 1)) {}
                        else if (!strcmp("print(1)", command)) { puts("1"); }
                        else { fprintf(stderr, "Invalid command."); }
                        Ответить
            • Подтверждаю.
              python@ngk-vps:~$ time python3 -c "print(1)"
              1
              
              real    0m0.280s
              user    0m0.155s
              sys     0m0.065s
              python@ngk-vps:~$ time python3 -c "print(1)"
              1
              
              real    0m0.061s
              user    0m0.046s
              sys     0m0.016s
              python@ngk-vps:~$ time python3 -c "print(1)"
              1
              
              real    0m0.148s
              user    0m0.122s
              sys     0m0.026s
              
              python@ngk-vps:~$ time lua -e "print(1)"
              1
              
              real    0m0.005s
              user    0m0.000s
              sys     0m0.004s
              python@ngk-vps:~$ time lua -e "print(1)"
              1
              
              real    0m0.002s
              user    0m0.000s
              sys     0m0.002s
              python@ngk-vps:~$ time lua -e "print(1)"
              1
              
              real    0m0.003s
              user    0m0.003s
              sys     0m0.000s

              Впрочем, это понятно: не зря «Lua» считается чуть ли не стандартом де-факто для встроенных языков.
              Ответить
              • чото какие-то дикие цифры у твоей впски. Там вас таких 100 штук чтоли на одном сервере?
                Ответить
                • Видимо с диском хуйня какая-то. Последующие вызовы нормальные:
                  python@ngk-vps:~$ time python3 -c "print(1)"
                  1
                  
                  real    0m0.068s
                  user    0m0.041s
                  sys     0m0.025s
                  python@ngk-vps:~$ time python3 -c "print(1)"
                  1
                  
                  real    0m0.033s
                  user    0m0.022s
                  sys     0m0.011s
                  python@ngk-vps:~$ time python3 -c "print(1)"
                  1
                  
                  real    0m0.040s
                  user    0m0.032s
                  sys     0m0.007s
                  python@ngk-vps:~$ time python3 -c "print(1)"
                  1
                  
                  real    0m0.034s
                  user    0m0.019s
                  sys     0m0.015s

                  Но вообще да, это нищебродская дешёвая впска, так что низкая производительность ожидаема.
                  Ответить
                  • вопрос к знатокам: если процесс висит в ожидании io, то он считается в time system или где?

                    Я за древний инструмент vmstat: он умеет показывать для процессора ожидание
                    Ответить
                    • Ожидания никуда не засчитываются. Юзер и систем - это реальная активность тредов, причём мультитредовая прога там может намотать больше чем real.
                      Ответить
                      • даже в real? то-есть волклок там не считается?

                        Тогда гост не прав: медленный диск никак не мог повлиять на его скорость.

                        Скорее уж гипервизор заметил активность с его стооны и дал ему больше квантов
                        Ответить
                        • real - это воллклок. user и system - это сумма таймингов со всех ядер, которые работали над этим процессом.
                          Ответить
                          • тогда если сумма систем и юзер равна волклок, то куда же делся ио? не ПИО же там в конце концов!
                            Ответить
                            • I/O было на первом запуске, проверь. Дальше тупо кеш.

                              65 + 155 < 280
                              Ответить
                                • Даже до 20 в итоге. Видимо повезло и соседние виртуалки уснули, х.з.
                                  Ответить
                                  • а шедулер гипервизора не может мутить?

                                    Вот у гиперве есть разные виды шедулера с разными полиси, небось и у квм (или что там у госта) тоже такие есть
                                    Ответить
                                • Возможно, я неудачно запустил его во время парсинга ГК (он одно ядро сжирает).
                                  Ответить
                                  • Не, от соседних процессов на твоей машине user не вырастет, только real будет расти.
                                    Ответить
                                    • Может, действительно гипервизор мутит?
                                      Несколько раз запустил, в середине включился парсинг:
                                      real    0m0.099s
                                      user    0m0.067s
                                      sys     0m0.053s
                                      
                                      real    0m0.127s
                                      user    0m0.091s
                                      sys     0m0.035s
                                      
                                      real    0m0.099s
                                      user    0m0.054s
                                      sys     0m0.028s
                                      
                                      real    0m0.127s
                                      user    0m0.109s
                                      sys     0m0.016s
                                      
                                      real    0m0.089s
                                      user    0m0.069s
                                      sys     0m0.018s
                                      
                                      real    0m0.250s
                                      user    0m0.151s
                                      sys     0m0.093s
                                      
                                      real    0m0.166s
                                      user    0m0.133s
                                      sys     0m0.032s
                                      
                                      real    0m0.255s
                                      user    0m0.149s
                                      sys     0m0.091s
                                      
                                      real    0m0.236s
                                      user    0m0.182s
                                      sys     0m0.045s
                                      
                                      real    0m0.279s
                                      user    0m0.175s
                                      sys     0m0.035s
                                      
                                      real    0m0.046s
                                      user    0m0.027s
                                      sys     0m0.014s
                                      
                                      real    0m0.061s
                                      user    0m0.048s
                                      sys     0m0.012s
                                      Ответить
                                    • ты уверен, что в случае виртуалок эо работает так же? виртуальная ось же не знает, что там на самом деле происходит: тратит виртуальый проц время на работу, или тупо ждет квантов

                                      а, ты про процессы в той же виртуалке?

                                      тогда я не прав, извини
                                      Ответить
            • $ time racket -e "(displayln 1)"
              1
                      0.41 real         0.32 user         0.08 sys


              Вся сила лишпа! Ну, в общем, ожидаемо.
              Ответить
    • При всей мерзкости крестов, они все таки больше всего ловят в компиле тайме, чем питухон, так что Григорий не прав
      Ответить
  • Фрактал говна воняет? Не может такого быть!
    Ответить
  • Г - Гордость за дар природы - лобовь к поеданию кала.
    О - Осознание своей необычности и неординарности.
    В - Воспитание подростающего поколения в духе терпимости к говноедству.
    Н - Нон-конформизм по отношению к партриархальному обществу в нашей стране.
    О - Организованность в клубном движении.
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8