[英]Why is int calculation slower than string conversion?
我編寫了兩個不同的crossfoot函數,一個使用簡單的整數計算和一個字符串轉換。
經過時間測量后,結果已達到預期。 字符串轉換有些慢。
但! 如果不打印結果,而只對變量賦值,則時序相反。 為什么?
這是代碼:
import time
def crossfoot(num, iterated=False):
result = 0
while num:
result += num % 10
num //= 10
if iterated:
num = result
result = 0
while num:
result += num % 10
num //= 10
return result
def crossfoot2(num, iterated=False):
digits = [int(x) for x in str(num)]
result = sum(digits)
if iterated and result > 9:
return crossfoot2(result, True)
return result
這是我所做的測試:
start = time.process_time()
res = crossfoot(20991231235959, True)
print(res)
end = time.process_time()
print("Crossfoot : {}".format(end-start))
start = time.process_time()
res = crossfoot2(20991231235959, True)
print(res)
end = time.process_time()
print("Crossfoot2: {}".format(end-start))
具有給定代碼的結果:
橫尺:2.0396000000002384e-05
交叉腳2:3.288599999999933e-05
如果刪除帶有print(res)
的行,則第一個功能將比第二個功能慢。
刪除打印結果:
橫尺:5.549999999999999e-06
Crossfoot2:2.6244000000001655e-05
是什么原因呢?
這不是時間關鍵,但我想了解原因。
在這兩種情況下, crossfoot
保持更快的速度。 刪除print
呼叫時,您可能會錯過e-06
。
兩者在e-05
,分別為0.554和2.624
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.