Форум сайта python.su
Соседняя тема о палиндромах и количестве итераций навела на мысль, что неплохо было бы придумать некоторый рейтинг производительности кода (если не велосипед, конечно). В той теме все считали количество итераций, что сомнительно оценивает производительность. А компьютеры у всех разные и скорость выполнения в секундах тоже не показатель, который бы можно было показать на форуме. Посему хочу предложить следующий метод. В экономике есть понятие “потребительская корзина”, вот и здесь можно создать некую “корзину кода”, в которую будет включаться набор различных операций: циклы, преобразования типов, вызовы функций и тд (нужно правильно соотношения подобрать). Программист выполняет эту “корзину” на своем компьютере и засекает время. Далее, для получения рейтинга производительности любого кода, время выполнения этого кода делится на время выполнения “корзины” и получается оценку скорости, которая теоретически должна быть одинакова для одного и того же кода на любом компьютере. То есть: R = C / B, где, R - рейтинг, C - время выполнения оцениваемого кода, B - время выполнения “корзины”.
Если эта идея имеет право на жизнь, то нужна помощь в составлении “корзины”, которая действительно описывала бы производительность конкретной машины.
Офлайн
Уже придумали до нас :)
http://code.google.com/p/unladen-swallow/source/browse/tests/performance/richards.py
http://code.google.com/p/unladen-swallow/source/browse/tests/performance/pystone.py
http://svn.python.org/view/python/trunk/Tools/pybench/
Последний, вроде бы, лучше всех по отзывам.
Но я использовал только PyStone.
Офлайн
Спасибо )
Правда, это не совсем то. Они все оценивают производительность самого питона, а не произвольного кода или хотя бы скрипта. Можно, конечно, с использованием этого написать простой оценщик кода.
Отредактировано (Окт. 2, 2009 15:07:52)
Офлайн
То, что они меряют - это ваша “корзина”.
Правда, есть проблема: число получается “плюс-минус трамвайная остановка”
Офлайн
Это я понял, значит большая часть работы выполнена. Я в разделел с проектами сделал тему, посмотрите, кому интересно.
Офлайн