Comments 13
Вы просто не умеете их готовить. Попробуйте, например, сравнить range и xrange от нескольких миллионов. В некоторых случаях использование yield намного удобнее «классического» подхода.
+2
Безусловно я не против генераторов! Сам использую их постоянно. Задача статьи — показать, что выбирать генераторы, предполагая, что они очень быстрые, неправильно.
0
И где в xrange yield?
0
UFO just landed and posted this here
На самом деле мне нужен как раз миллион, а точнее 7. Так как это кусок кода оптимизатора торговых стратегий. Испытать на большом потоке данных ещё предстоит )
+1
Во-первых, если есть сравнение производительности, то нужно указывать, как вы его производили.
Во-вторых, вы сравниваете только время создания без сарвнения скорости работы, это действительно такой специфичный случай?
В-третих, у меня получилось timeit-ом и huppy одинаковое время создания объектов и разница в памяти 356 и 572 Мб.
Во-вторых, вы сравниваете только время создания без сарвнения скорости работы, это действительно такой специфичный случай?
В-третих, у меня получилось timeit-ом и huppy одинаковое время создания объектов и разница в памяти 356 и 572 Мб.
+1
Завидую я вам с несложностью выбора.
Быстродействие кода — это один аспект из многих. Один из основных — сокращение количества ошибок. Вероятность, что программист допустит ошибку в генераторе выше, чем в случае с классом, больше моментов нужно учитывать. При прочих равных я всегда буду использовать максимально тупой и незатейливый код, использующий 20% от возможностей языка. Вот это уже поднапряжет мозг джуниора:
Второй момент — это полная некорректность сравнения класса и функции. Результатом выполнения может быть одно и то же, но они работают абсолютно по разному, по разному относятся к персистентности и подразумевают разный характер вызовов, генератор не предназначен для того, чтобы дернуть его пару раз, потом пойти погулять и потом скормить ему что ни будь. Это — функция от определенных данных, которая производит вычисление. Класс группирует функции и данные в некую целостную единицу.
А бенчмаркать (криво) вычислительные операции на питоне. Да это же гребаный лол. Лучше раскрыть для себя вот этот раздел документации: docs.python.org/extending/extending.html
Быстродействие кода — это один аспект из многих. Один из основных — сокращение количества ошибок. Вероятность, что программист допустит ошибку в генераторе выше, чем в случае с классом, больше моментов нужно учитывать. При прочих равных я всегда буду использовать максимально тупой и незатейливый код, использующий 20% от возможностей языка. Вот это уже поднапряжет мозг джуниора:
previous = (yield)
Второй момент — это полная некорректность сравнения класса и функции. Результатом выполнения может быть одно и то же, но они работают абсолютно по разному, по разному относятся к персистентности и подразумевают разный характер вызовов, генератор не предназначен для того, чтобы дернуть его пару раз, потом пойти погулять и потом скормить ему что ни будь. Это — функция от определенных данных, которая производит вычисление. Класс группирует функции и данные в некую целостную единицу.
А бенчмаркать (криво) вычислительные операции на питоне. Да это же гребаный лол. Лучше раскрыть для себя вот этот раздел документации: docs.python.org/extending/extending.html
0
Sign up to leave a comment.
Генераторы vs классы