Pull to refresh

Comments 15

Стоит упомянуть, что для численных массивов лучше использовать numpy.
Добавьте, пожалуйста, в howlong вызов функции хотя бы пару десятков раз, а то разница в несколько десятых секунды вполне может быть погрешностью измерения.
Проверил, все осталось на прежних позициях, только время выросло в 10 раз :)
Рекомендую в книжке «Идеальный код», Глава 18. «Реализация словарей Python: стремление быть всем во всем полезным».
Со словарями в Python не все просто. Они имеют различные реализации, могут переиспользоваться и могут налету переключать функцию сравнения ключей.
Спасибо большое что упомянули книгу, просмотрел оглавление и сразу заказал :)
удивительно что цикл медленее аж на 20%. там под капотом настолько большая разница?
Может не совсем в тему, но это:
tmp.__name__ = f.__name__
tmp.__doc__ = f.__doc__

вполне можно заменить декоратором functools.wraps:
def howlong(f):
    @functools.wraps(f)
    def tmp(*args, **kwargs):
Боюсь огорчить, но тесты не показательны: пространства имен в питоне — это те же словари; области видимости определяются вложенностью. Таким образом, в вашем случае, скорость доступа определяется вложенностью и размером словаря модуля. Как только размер словаря модуля изменится, вполне можете ожидать других результатов.

На PyCon2013, если правильно помню, было занятие, посвященное пространствам имён. Посмотрите видео, возможно, убдет полезно.
спасибо за полезный комментарий
Ребят, понимаю что оффтопик, начал учить Питон 3.3 для научных целей (анализ соц. сетей и обработка естественного языка).
Подскажите основные ресурсы по Питону на русском, именно форумы чтобы спрашивать, набрал в гугле «python русское сообщество» и ВСЕ первые ссылки это заброшенные форумы, последнее сообщение в которых хорошо если несколько месяцев назад. Самый актуальный это пока vingrad — но и на нем не так чтоб много народу.
Английский знаю и пользуюсь преимущественно pyvideo.org www.codecademy.com/ru/tracks/python и stackoverflow.
Еще один тест, будет занимать 3 место (110-120%)

@howlong
def process_list_without_dots():
    """Суперфункция с заменой вызова метода объекта на локальную переменную"""
    local_plus_value = GLOBAL_VALUE
    new_lst = []
    append = new_lst.append
    for i in lst:
        append(i**2)
    for v in new_lst:
        v + local_plus_value
спасибо за идею, совсем забыл про такой способ
Sign up to leave a comment.

Articles