Форум сайта python.su
izekiaВы замеры времени делаете не совсем корректно. Если как описано в первом посте, то мягко говоря, результат может очень не соответствовать действительности. Посмотрите модуль timeit
интересные, кстати, вещи, результатов многих замеров банально не ожидал
Офлайн
izekia так никто не спорит, яж говорю давай ещё :)
действительно интересные вещи
Отредактировано (Авг. 6, 2008 12:15:18)
Офлайн
Daevaornспасибо за ссылкуizekiaВы замеры времени делаете не совсем корректно. Если как описано в первом посте, то мягко говоря, результат может очень не соответствовать действительности. Посмотрите модуль timeit
интересные, кстати, вещи, результатов многих замеров банально не ожидал
By default, timeit() temporarily turns off garbage collection during the timing. The advantage of this approach is that it makes independent timings more comparable. This disadvantage is that GC may be an important component of the performance of the function being measured. If so, GC can be re-enabled as the first statement in the setup string.и если алгоритм функции чувствителен активности, то все же это следует обсудить отдельно, собственно спасибо за поправку.
Отредактировано (Авг. 6, 2008 12:46:33)
Офлайн
Daevaorn
спасибо за поправку, написал следующий инструмент для более правильных замеров:
from time import clock
import gc
from cStringIO import StringIO
import psyco
def getTime(f, it):
start = clock()
for i in it:
f()
end = clock()
return end - start;
def testIt(f, name, reps = 10):
gcState = gc.isenabled
gc.enable()
it = xrange(reps)
psyco.bind(f)
time1 = getTime(f, it) / reps
psyco.unbind(f)
time2 = getTime(f, it) / reps
gc.disable()
psyco.bind(f)
time3 = getTime(f, it) / reps
psyco.unbind(f)
time4 = getTime(f, it) / reps
if gcState:
gc.enable()
return '%s\t%.5f\t%.5f\t%.5f\t%.5f\tsec/repeat in %d repeats' % (name, time1, time2, time3, time4, reps)
def compareFuncs(funcList, reps = 10):
result = StringIO()
result.write('\tpsy&gc\tgc\t\tpsyco\tclean\n')
for f in funcList:
result.write(testIt(f, str(f).split()[1], reps))
result.write('\n')
result.seek(0)
return result.read()
Отредактировано (Авг. 6, 2008 13:55:34)
Офлайн
Результат сильно изменился при таком замере?
Офлайн
Ferromanя выше для формирования списка первые результаты поправил
Результат сильно изменился при таком замере?
Отредактировано (Авг. 6, 2008 13:56:34)
Офлайн
Все, все результаты сравнений я поправил с учетом участия сборщика мусора и использования psyco
Сильно ничего не изменилось, только первый результат, о чем я написал выше.
Офлайн
то всьо класно але осовна проблема в пітона з задачками - це дуже повільне зчитування і вивід даних
Офлайн
я как раз это и хотел замерять, и посмотреть где проблема
Офлайн
можна потестити тут http://www.spoj.pl/problems/INTEST/
Офлайн