Что делать, если ваш код на Python тормозит / Григорий Бакунов (Яндекс)

Поділитися
Вставка
  • Опубліковано 4 лют 2020
  • Moscow Python Conf++ 2019
    Зал 1
    5 апреля, 14:00
    Тезисы и презентация:
    conf.python.ru/2019/abstracts/...
    Секретный доклад от директора по распространению технологий в Яндексе.
    --------
    Нашли ошибку в видео? Пишите нам на support@ontico.ru
  • Наука та технологія

КОМЕНТАРІ • 10

  • @user-pw9sn6ih9e
    @user-pw9sn6ih9e 4 роки тому +5

    Конкретно в этом коде подсчет контрольной суммы можно было вынести из цикла. Вне цикла разбить body через метод partition, подсчитать сумму до и после @respondent@, а в цикле только считать сумму для resp. Думаю, получилось бы то же х100 ускорение, хотя это зависит от длины body.

  • @vladrm100
    @vladrm100 4 роки тому +1

    Очень хороший доклад, спасибо!

  • @benazir.rajabov
    @benazir.rajabov 4 роки тому +1

    Очень жаль, что он не делает курс по изучению python. Такое объяснение учитывая все нюансы работы интерпретаторов. Ну хотя бы роудмэп создать, ему бы конкурентов не было. А по поводу презентации Браво! Если когда-нибудь создадут технику по копирования мозгов, твой мозг будет первым). Да, есть люди кто старается изучить эту область до твоего уровня может и больше), но доступа к информации и ресурсам как у тебя нету.

  • @anotherone3641
    @anotherone3641 4 роки тому +2

    Выносить ифы из цикла это довольно древний олдскул (эры динозавров примерно, т.е. вообще допентиумной эпохи), который сейчас нифига не помогает выиграть в производительности. Почему так - довольно долго объяснять в деталях но основной посыл в том что размер кеша процессоров значительно увеличился, он стал трехуровневым и процы научились предсказывать переходы. В то же время пайтон представляет из себя интерпретатор и время необходимое на интерпретацию и выполнение инструкции даже не напрямую, а в байткоде -- значительно превышает время, нужное процу чтобы сбросить и перезагрузить кеш инструкций в случае ошибочного предсказания ветвления. Дяденька из яндекса должен был бы это знать наверное... но нет, увы.

    • @Extremesarova
      @Extremesarova 4 роки тому

      Так он уже много веков не программирует, поэтому и не знает

    • @eugenemorozov
      @eugenemorozov 3 роки тому

      Я не понял: он говорит, что если можно вынести любую работу из цикла, то лучше ее вынести. Не понимаю, почему это сейчас неверно. Если цикл делает меньше работы, он всё равно быстрее выполнится, несмотря на магию процессоров.

    • @anotherone3641
      @anotherone3641 3 роки тому

      @@eugenemorozov Программа должна решать поставленную задачу. Если ты сможешь написать программу которая решает ту же задачу за меньшее число инструкций и вообще оптимальнее без потери функционала - то ты молодец, кто ж с этим спорит. Однако к программам на питоне кроме всего этого и прочего предъявляется еще и требование читаемости исходного кода. Зачастую в ущерб паре-тройке процентов скорости выполнения. Повторюсь: скорость выполнения - отнюдь не фишка питона. Это во-первых. Во-вторых, что по-твоему будет быстрее: один большой цикл с ветвлениями в нем, или пара-тройка циклов поменьше но без ветвлений (ветвления вынесли на уровень выше)? Оба варианта решают ту же самую задачу, целиком помещаются в кэше процессора и условие ветвления уже процессору известно перед началом всех циклов (т.е. это не рандом на каждой итерации).

  • @xxsrez
    @xxsrez 4 роки тому

    Посмеялся, что nim, pyrhon, cython, ruby, go итп итд типа все знают, а вот строчка на Си и сразу шок, что ее поняли.

  • @awnion
    @awnion 4 роки тому

    Шрифт Pragmata Pro (вдруг кому-то интересно)

  • @user-fg1lj2qm5p
    @user-fg1lj2qm5p 3 роки тому

    Алиса, ваш браузер устарел.