Найти - Пользователи
Полная версия: Как еще можно оптимизировать следующий код?
Начало » Python для экспертов » Как еще можно оптимизировать следующий код?
1 2 3 4 5 6 7 8 9
crchemist
справді - пиши сюда http://www.spoj.pl/forum/viewforum.php?f=20 Цей форум більше відповідає твоїм питанням
izekia
crchemist тот форум мертвый, да и потом там не принято постить решения
crchemist
izekia
Как еще можно оптимизировать следующий код?
http://docs.python.org/lib/bytecodes.html )) python asm

from new import function, code
….
завтра попробую
izekia
да, весело
тоже надо бы попробовать, но мне кажется на большой задаче выигрыш будет
izekia
Интересная вещь, у меня этот код:
import psyco
psyco.full()

import sys

from cStringIO import StringIO
import gc; gc.disable()
fin = StringIO(sys.stdin.read())
fout = StringIO()
rinput = fin.readline
routput = fout.write
#rinput = sys.stdin.readline
#routput = sys.stdout.write

#from math import log
cache = []

def fillCache(maxVal):
curPowVal = 5
while curPowVal <= maxVal:
cache.append(curPowVal)
curPowVal *= 5

def main():
vals = []
fillCache(1000000000)
for i in xrange(int(rinput())):
vals.append(int(rinput()))
#val = int(rinput())
#print sum([val // divisor for divisor in cache])
for val in vals:
print sum([val // divisor for divisor in cache])#[:int(log(val, 5)) + 1]])
main()
работает быстрее на 2 десятых, чем:
import psyco
psyco.full()

import sys

from cStringIO import StringIO
import gc; gc.disable()
fin = StringIO(sys.stdin.read())
fout = StringIO()
rinput = fin.readline
routput = fout.write
#rinput = sys.stdin.readline
#routput = sys.stdout.write

#from math import log
cache = []

def fillCache(maxVal):
curPowVal = 5
while curPowVal <= maxVal:
cache.append(curPowVal)
curPowVal *= 5

def main():
#vals = []
fillCache(1000000000)
for i in xrange(int(rinput())):
#vals.append(int(rinput()))
val = int(rinput())
print sum([val // divisor for divisor in cache])
#for val in vals:
#print sum([val // divisor for divisor in cache])#[:int(log(val, 5)) + 1]])
main()
evgenyl
кстати psyco не работает на 64 битных системах :(
izekia
evgenyl, спасибо за информацию, но судя по всему на сфере не 64-битная система :)
slav0nic
в prime1 кто-то вложился по времени? интересн окак там 0.5с получиться может…
izekia
slav0nic
в prime1 кто-то вложился по времени? интересн окак там 0.5с получиться может…
я уложился, но оптимизацией не занимался :)
вообще там тупо можно все простые по максисуму прописать в код, соответственно время на их расчет убрать, а дальше обнулять по заданной решетке и filter(None, обработанный_диапазон) делать
slav0nic
да я уже вроде тож разобрался, а с MUL вот задница)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB