1. Python / Говнокод #26382

    −1

    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, 25 Января 2020

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

    • Примеры low-latency процессов тоже конечно бесподобны
      Ответить
      • https://gregoryszorc.com/resume.pdf

        > 4,000 code reviews for Mozilla projects; >6,000 commits authored; >29,000 bug
        comments
        > 2,000 commits contributed

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

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

          Тот же повершелл намного дольше грузится, и ничего, юзают.
          Ответить
          • По этому я за lua
            Ответить
            • $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."); }
                          Ответить
              • Подтверждаю.
                [email protected]:~$ time python3 -c "print(1)"
                1
                
                real    0m0.280s
                user    0m0.155s
                sys     0m0.065s
                [email protected]:~$ time python3 -c "print(1)"
                1
                
                real    0m0.061s
                user    0m0.046s
                sys     0m0.016s
                [email protected]:~$ time python3 -c "print(1)"
                1
                
                real    0m0.148s
                user    0m0.122s
                sys     0m0.026s
                
                [email protected]:~$ time lua -e "print(1)"
                1
                
                real    0m0.005s
                user    0m0.000s
                sys     0m0.004s
                [email protected]:~$ time lua -e "print(1)"
                1
                
                real    0m0.002s
                user    0m0.000s
                sys     0m0.002s
                [email protected]:~$ time lua -e "print(1)"
                1
                
                real    0m0.003s
                user    0m0.003s
                sys     0m0.000s

                Впрочем, это понятно: не зря «Lua» считается чуть ли не стандартом де-факто для встроенных языков.
                Ответить
                • чото какие-то дикие цифры у твоей впски. Там вас таких 100 штук чтоли на одном сервере?
                  Ответить
                  • Видимо с диском хуйня какая-то. Последующие вызовы нормальные:
                    [email protected]:~$ time python3 -c "print(1)"
                    1
                    
                    real    0m0.068s
                    user    0m0.041s
                    sys     0m0.025s
                    [email protected]:~$ time python3 -c "print(1)"
                    1
                    
                    real    0m0.033s
                    user    0m0.022s
                    sys     0m0.011s
                    [email protected]:~$ time python3 -c "print(1)"
                    1
                    
                    real    0m0.040s
                    user    0m0.032s
                    sys     0m0.007s
                    [email protected]:~$ 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
                                Ответить
                                • почему 155 упало до 68 то?
                                  Ответить
                                  • даже до 40 с хуем
                                    Ответить
                                  • Даже до 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
                                        Ответить
                                        • нада читат
                                          https://lwn.net/Articles/793375/
                                          мне лень
                                          Ответить
                                      • ты уверен, что в случае виртуалок эо работает так же? виртуальная ось же не знает, что там на самом деле происходит: тратит виртуальый проц время на работу, или тупо ждет квантов

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

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


                Вся сила лишпа! Ну, в общем, ожидаемо.
                Ответить
    • Наброс на крестушню от Григория:

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

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