ФорумПрограммированиеPython → Why does Python code run faster in a function?

Why does Python code run faster in a function?

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Июль 21, 2012, 1:29 п.п.

    def main():
        for i in xrange(10**8):
            pass
    main()
    

    This piece of code in Python runs in

    real    0m1.841s
    user    0m1.828s
    sys     0m0.012s
    

    However, if the for loop isn't placed within a function,

    for i in xrange(10**8):
        pass


    then it runs for a much longer time:

    real    0m4.543s
    user    0m4.524s
    sys     0m0.012s
    

    Why is this?


    http://stackoverflow.com/questions/11241523/why-does-python-code-run-faster-in-a-function
    Спустя 23 сек.
    The difference is that STORE_FAST is faster (!) than STORE_NAME. This is because in a function, i is a local but at toplevel it is a global.
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Июль 21, 2012, 2:17 п.п., спустя 47 минут 59 секунд

    ааа, ну теперь всё ясно.
    Спустя 14 сек.
    ;)
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz Июль 21, 2012, 4:13 п.п., спустя 1 час 55 минут 27 секунд

    А по большому счету это должно быть справедливо для многих, если не для всех языков.
    Тот же js вспомните - откуда пошла параноя оборачивать всё в (function(){})(). Примерно то же самое - глобальные обращения тормознее локальных.
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz Июль 21, 2012, 4:17 п.п., спустя 4 минуты 11 секунд

    Тот же js вспомните - откуда пошла параноя оборачивать всё в (function(){})(). Примерно то же самое - глобальные обращения тормознее локальных.

    чтобы не засирать глобальный контекст и ничего более.
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz Июль 21, 2012, 4:28 п.п., спустя 10 минут 45 секунд


    Тот же js вспомните - откуда пошла параноя оборачивать всё в (function(){})(). Примерно то же самое - глобальные обращения тормознее локальных.

    чтобы не засирать глобальный контекст и ничего более.

    Ну мы может про разные js говорим? http://www.webreference.com/programming/javascript/jkm3/index.html
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Июль 21, 2012, 4:37 п.п., спустя 9 минут 35 секунд

    васяц имел ввиду, что
    параноя оборачивать всё в

    это точно не изза скорости, а как раз для инкапсуляции локальных переменных. чтобы не получить ошибки одновременного использования глобальных. скорость это уже дело второе. особенно смешно про нее говорить, если мы юзаем вещи аля jqeury обернутые в (fucntion () {})() для скорости :)))
    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Июль 21, 2012, 4:40 п.п., спустя 2 минуты 56 секунд

    ты спас васяца)))
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Июль 21, 2012, 4:46 п.п., спустя 5 минут 46 секунд


    ты спас васяца)))
    :*
    Спустя 8 сек.
    своих не бросаем :D
    Сапожник без сапог
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz Июль 21, 2012, 4:47 п.п., спустя 38 секунд

    1. Да не засирать глобальный контекст это-то понятно априори.
    2. vasa_c сказал, что "ничего более". Я так понял, что он имеет в виду, что на скорость не влияет. Ну я привел ссылку на бенч.
    3. Та же jquery обернута в (function(window, undefined){})(window), как раз для скорости. Ну там внутри кроме jQuery имен и нету и то глобализируется.
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz Июль 21, 2012, 4:55 п.п., спустя 8 минут 25 секунд


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


    Я имел в виду конечно же нефункциональные языки. В функциональных языках глобального контекста нет и следовательно нет проблемы :)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Июль 21, 2012, 5 п.п., спустя 5 минут 17 секунд

    mathete, :)
    Сапожник без сапог
  • DanaART

    Сообщения: 28 Репутация: N Группа: Кто попало

    Spritz Авг. 18, 2012, 10:02 п.п., спустя 28 дней 5 часов 1 минуту

    Шел я лесом, песню пел.
    Соловей мне на хуй сел.
    Я хотел его поймать
    Улетел ебена мать

Пожалуйста, авторизуйтесь, чтобы написать комментарий!