簡體   English   中英

為什么int計算比字符串轉換慢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM