我正在计算一些非常大的分区问题的答案,并想知道为什么b = a / c(其中a和c以及两个正整数)必须比你输入问题时要更快找出问题并且要求打印答案:b = a / c比b = a / c然后打印b更快。
很慢:
from datetime import datetime - startTime = datetime.now()
a=2**1000000-3
b=a/13
print b
print(datetime.now()-startTime)
但没有print b
,它非常快。我后来输入了c=a%13
以查看是否有任何实际发生的事情(我对编程仍然很陌生)而且当我输入print c
(没有print b
代码时)它非常快。
答案 0 :(得分:2)
你正在尝试输出相当大的数字(大约10 ^ 300000) - 从二进制转换为十进制格式需要时间(我想这需要做大约300000个分区,内部数字以二进制格式存储) 。如果你真的需要以十进制格式输出整数 - 我认为你不能加速它。但您可以快速打印十六进制或二进制格式的数字:
hex(b)
bin(b)
您可以使用Decimal
类型在内部以十进制格式存储数字,但使用此类型的计算可能会慢得多。
答案 1 :(得分:2)
据我所知,IO操作很慢,打印到屏幕就像写入文件一样,它会阻塞线程一段时间。
正如有人指出的那样,从数字到字符串的转换也可能需要时间。每当我必须测量某些东西的时间。我测量计算的时间并在测量时间后打印任何类型的结果。
为了使程序更快,但内存耗尽,您可以将每个结果保存在列表中,然后编译一个大字符串并仅打印一次。
重复打印打印比打印一次大打印需要更多时间。
from datetime import datetime
startTime = datetime.now()
a=2**1000000-3
b=a/13
elapsedTime = datetime.now() - startTime
print "Elapsed time %s\n Number: %s" % (elapsedTime, b)
答案 2 :(得分:0)