下面的程序(這是內部功能的素數)的運行時間爲110.726383227秒如何提高這個程序的效率?
如果我運行同一程序,而不在一個函數(總理)包裝它,它的運行時間222.006502634秒
我做通過將其封裝在一個函數中可顯着提高性能。
還有沒有可能提高這個程序的效率?
# This is a program to find sum of prime numbers till 2 billion
def prime():
import time
start_time = time.clock()
num = 2
j=1
tot_sum = 0
for num in xrange(2,2000000):
count = 0
for j in xrange(1,int(num**0.5)+1): # checking from 1 to sqrt(n)+1
if(num % j == 0):
count = count+1
if(count == 1):
tot_sum = tot_sum + num
print "total sum is %d" % tot_sum
print time.clock() - start_time, "seconds"
使用'timeit'模塊測試程序的時機並不'time.clock()'。 –
@hcwhsa'timeit'非常棒,但是當一次運行需要幾分鐘時,這是不切實際的。它專爲小片段而設計。使用'timeit'來進行單次運行是沒有用的(它使用了更好的秒錶,但在這個時間尺度上這沒什麼用處)。 – delnan
我認爲這是因爲它只需要處理本地命名空間(STORE_FAST指令)而不是本地和全局命名空間(STORE_NAME指令)。本地名稱空間使用寄存器,而全局名稱空間將其名稱和對象存儲在RAM中。但我可能是錯的。 – Shashank