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

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    In order to fund the development work on speeding CPython by a factor of five, something like $2M will be required.
    This seems like a sizeable sum, but compared to the amount of money spent on Python development and the 
    cost of running Python applications, it is quite a modest sum.
    
    ---
    
    The overall aim is to speed up CPython by a factor of (approximately) five. We aim to do this in four distinct stages, 
    each stage increasing the speed of CPython by (approximately) 50%.
    
    1.5**4 ≈ 5
    
    ---
    
    The interpreter will adapt to types and values during execution, exploiting [b]type stability[/b] in the program
    
    ---
    
    Improved performance for [b]integers of less than one machine word[/b].
    Improved peformance for [b]binary operators[/b].
    
    ---
    
    Simple "JIT" compiler for small regions. Compile small regions of specialized code, using a relatively simple, fast compiler.
    Extend regions for compilation. Enhance compiler to generate [b]superior machine code[/b].

    питонисты готовят новую версию интерпретатора с революционной фичей - возможностью отъема денег у населения. Ожидается, что нововведение позволит языку быстро заработать очки на рынке пускания пыли в глаза.

    https://github.com/markshannon/faster-cpython

    Запостил: Fike, 13 Ноября 2020

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

    • Выглядит как пламенная речь гражданина О. Бендера.
      Ответить
      • Таким образом сипайтон переименовывается в новые кресты, а кресты, соответтсвенно, в старого питона
        Ответить
    • > factor of five

      Даёшь пятилетку за 4 года!
      Ответить
      • пять спринтов за четыре итерации
        Ответить
        • фокус фактор более одного
          Ответить
          • Что такое фокус-покус?
            Ответить
            • «Покус» — это от словать «покусать». Кусь!
              Ответить
            • береш свою оцену задачи и делиш на него вроде
              Ответить
              • Не буду я ничего делить на неведомую хуйню. Вдруг там ноль.
                Ответить
                • тогда так: берешь длину спринта (например, две недели) и умножаешь на форус фактор.

                  сколько веремени получается -- на столько задач и берешь

                  короче

                  у тебя есть таска
                  ты оценил ее в два дня

                  но на самом деле ты пол дня будешь сидеть на тупых митингах, или мерджить конфликты в vcs, так что у тебя не два дня рабочего времени, а полтора

                  вот про это и покус пактор
                  Ответить
                  • А я думал остальное время на всякие срочные задачи и тушения пожаров.
                    Ответить
                    • тушение тоже сюда входит, а еще отвлечение на общение с другими итд
                      Ответить
      • > factor of five

        Будут на Си переписывать через нейросеть фейсбука?
        Или напишут KPython (аналог KPHP)?
        Ответить
    • В PHP тоже теперь есть JIT.

      https://habr.com/ru/company/otus/blog/509598/
      Ответить
      • Т.е. K-PHP больше нинужен?
        Ответить
        • > Таким образом, компилятор Just In Time преобразует операционный код в машинный код для конкретной архитектуры, используя DynASM.

          > KPHP (kPHP, KittenPHP) — это свободный (GPL/LGPL) транслятор PHP-кода в С++ от компании ВКонтакте.

          Видимо, да.
          Ответить
        • А вот в PHP такая плюшка есть. Что можно из строки сформировать имя поля\переменной и обращаться по ней.

          class A
          {
             public $foo;
             public $bar;
          };
          
          $a = new A();
          $field = "foo"
          echo $a->$field;


          И будет выведено значение $a->foo.

          Интересно, как это в C++ код отображалось?
          Ответить
          • Никак.

            "KPHP не компилирует то, что принципиально не компилируемо".
            Ответить
            • Ну я бы индекс строил, если бы натыкался на такое.
              То есть хранил бы четверки (имя, смещение, тип, вид - переменная\поле класса)
              И уже основываясь на нём подстановку делал.
              Ответить
              • Да. Первый принцип какой-то менеджерской ненужной науки: «Если задача не противоречит законам физики, то она имеет решение».
                Ответить
            • > KPHP не компилирует то, что принципиально не компилируемо
              А жаль, фича хорошая.

              Можно объект из словаря сформировать.
              Ответить
            • Обязательно компилировать class A в сишную структуру (тем более, что поля foo и bar хранят объекты с динамической тупизацией)? Его же можно скомпилировать в карту map<string, pitushnya>, ключами которой будут "foo" и "bar". Тогда и этот реальный пример скомпилируется.
              Ответить
              • Я выше об этом и писал.
                Но в K-PHP такого нету.
                Ответить
              • Тогда это немногим будет отличаться от самого интерпретатора, кстати.
                Ответить
                • Ну основные поля, которые прямо в конструкторе заполнены, можно в сишную структуру записать. А остальной хлам свалить в мапу. Тогда и пирфоманс для основных полей будет и динамические фишки. v8 вроде так и оптимизирует js'ные классы.
                  Ответить
                  • Что делать, если поле int, а в него через рефлексию по имени пытаются засунуть string.
                    Ответить
                    • сделать рядом мапу и всегда работаь через нее?
                      Ответить
                      • > всегда

                        Ну мы же хотели типизированные поля, чтобы избежать оверхеда от мапы и вариантных типов...

                        JIT'у легче в этом плане. Он всегда может деоптимизацию сделать.
                        Ответить
                      • З.Ы. Хотя можно и runtime error при таком обращении кинуть, наверное. Типа там int и ниибёт. Но это уже получается свой язык, а не PHP.
                        Ответить
                        • > runtime error при таком обращении кинуть
                          Фу, это не путь похапэ. Чтобы был настоящий путь похапэ, надо эту runtime error в обязательном порядке высрать пользователю в браузер. А если программист не хочет пользователю показывать runtime error — пусть ставит собачку!
                          Ответить
                          • Путь пхп - молча сконвертить эту хуйню в инт. А если не сконвертилось - положить туда ноль.
                            Ответить
      • Но даже без всего этого php сейчас работает достаточно быстро, подбираясь к java и C++.

        Какая аналитика )))
        Ответить
        • у пыхоебов какой-то комплекс про жабу, видимо. Я постоянно слышу: мы как жаба, мы не хуже жабы, мы уже догнали жабу

          и при этом: ой, ну мы же не будем как в жабе?


          короче, я три дня скакал за вами, чтобы сказать, как вы мне безразличны
          Ответить
          • они там смешно придумывали синтаксис для аннотаций, прекрасно понимая что вообще-то надо использовать собачку, но собачка у них святое
            Ответить
            • Кстати, а чем дело-то закончилось? Помнится, там предлагаемые вореанты были один упоротее другого, и «@@annotation» было даже не очень ебануто (повторять повторять символы пхпшникам не привыкать: любой нормальный человек, написавший больше десяти строк на нормально типизированном языке, не может не хохотать, глядя на «===»).
              Ответить
              • >>>"==="

                Так в ЯваСкрипте это тоже есть.
                Ответить
              • по-моему закончилось комментарно-выглядящей хуйней ##[Annotation(value = "i want to die")]
                Ответить
                • Лол.
                  Ответить
                • А почему две решётки?
                  Ответить
                  • А почему два «P»?
                    Ответить
                  • потому что я наврал, там всего одна

                    https://stitcher.io/blog/attributes-in-php-8

                    один пёс пресвятую собачку не тронули
                    Ответить
                    • С одной норм, получается как директива препроцессора в крестах.
                      Ответить
      • «Я надеюсь, что эта статья была полезна для вас, и вам удалось лучше разобраться, что такое JIT в PHP 8. Не стесняйтесь связываться со мной в твиттере, если вы хотите добавить что-то, что я мог забыть здесь, и не забудьте поделиться этим со своими коллегами-разработчиками, это, несомненно, добавит немного пользы вашим беседам!-- @nawarian»

        Какое удобное средство связи )))

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

            https://youtu.be/wevYgCyUSa8

            Кстати, это тот ещё багор. Вместо производства какого-либо контента многие делают реакции на реакции на что-то там модное, не люблю такое. Я вообще не понимаю смысла видеообращений в том виде, в котором они обычно существуют.

            Одно дело, когда студиоз записывает видео, где он сидит на восьмиметровой берёзе и ловит связь у себя в селе для дистанционки, а совсем другое – когда Василий Питухин 30 минут рассказывает, что Аркадий Питулин лох и дурак. Нет ни удобства текста, ни удобства подскаста.
            Ответить
            • > Аркадий Питулин лох и дурак.

              10 reasoms WHAI

              И еще скриншот с обведенным красным кружочком ёбаным ничем.
              Ответить
          • скоро все так и будет


            Здравствуйте, я написал научный пейпер. Вот вам он в виде видео на 78 минут.


            Здравтвйте. Я записал видеорецензию на ваш научный пейпер.

            С результатами наших исследований можно ознакомиться на ютьюбе
            Ответить
      • я где-то видел бенчмарк, где результаты отличались на пару процентов. какое ускорение )))

        зная как пишется пхп - джит там наверняка соответствующий
        Ответить
      • > Имея на руках токены, интерпретатор PHP проанализирует эту коллекцию токенов и постарается найти в них смысл.

        а вы еще жалуетесь, что это у вас бессмысленная работа.
        Ответить
        • Какой-то из крестоконпеляторов, помнится, выдавал ошибку "code makes no sense".
          Ответить
      • > Вы делаете что-то не завязанное на ввод/вывод, например, обработку изображений или машинное обучение.

        обработка изображений* и машинное обучение на PHP

        *если быть до конца честным, однажды мне приходилось нарезать equirectangular projection в cubemap, но это был замечательный экспириенс, чтобы больше никогда так не делать
        Ответить
        • > обработку изображений или машинное обучение

          Я могу тупить, но разве реальную работу там не какие-нибудь сишные либы делают? А пхп/питон просто оркестрируют этот процесс, стараясь как можно меньше трогать сами данные.
          Ответить
          • Там все равно дохера программировать на клиентском языке, по крайней мере с изображениями. Если в imagemagick нет нужного фильтра - а если вам зачем-то нужно месить изображения, в не просто ресайзить, то скорее всего у вас там какая-то кастомная хуйня - придется обходить каждый пиксель. Ну и это довод в пользу джита, типа он ускорит это дело, явно подразумевая реализацию в PHP-спейсе.
            Ответить
            • Уж лучше модуль на сях запилить с кастомной питушнёй.
              Ответить
              • Или шейдер, хотя на серваках не всегда хорошее гпу есть, конечно.
                Ответить
              • пхпшник? на сях? там же ведь даже ошибку не заглушить.
                Ответить
                • > там же ведь даже ошибку не заглушить

                  Да можно при желании... Поймать сигнал/seh, скипнуть инструкцию и продолжить исполнение.

                  У меня, к примеру, есть функция, которая читает память забивая на ошибки. Но там не сигнал, там прямо прерывания в IDT захучены.
                  Ответить
                  • Я за «VEH». Даже как-то забавы ради делал такую хуйню с пропуском инструкции, но, ожидаемо, после этого ломалось вообще всё.
                    Ответить
                    • > ломалось вообще всё

                      Ну можно крестовый экцепшен заинжектить. Хотя в noexcept функциях может и не сработать...
                      Ответить

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