プログラムのテストを作成し、メモリ使用量を確認しました。何らかの理由で、同じ操作を関数でラップすると、メモリ使用量が多項式 (または指数関数的) に増加します。Python 2.7.1 のメモリ使用量を追跡するためにmemory_profilerを使用しています。
コード:
def convertIntToBitint(number): return (pow(2, number - 1))
テスト コードと結果 (少しクリーンアップ):
Line # Mem usage Increment Line Contents
23 9.070 MB 0.000 MB def test_convertBigIntToBitint(self):
24 9.070 MB 0.000 MB result1 = convertIntToBitint(21000)
25 9.070 MB 0.000 MB answer1 = pow(2, 20999)
27 10.496 MB 1.426 MB result2 = convertIntToBitint(5015280)
28 11.785 MB 1.289 MB answer2 = pow(2, 5015279)
30 70.621 MB 58.836 MB result3 = convertIntToBitint(121000000)
31 85.367 MB 14.746 MB answer3 = pow(2, 120999999)
convertIntToBitint
がより多くのメモリを消費するのはなぜですか? また、メモリ使用量が直線的に増加しないのはなぜですか?
2rs2ts の編集
面白い。これがあなたの意図したものかどうかはわかりません。
Line # Mem usage Increment Line Contents
23 9.074 MB 0.000 MB def test_convertBigIntToBitint(self):
24 56.691 MB 47.617 MB result3 = convertIntToBitint(121000000)
25 85.539 MB 28.848 MB answer3 = pow(2, 120999999)
26 85.539 MB 0.000 MB result2 = convertIntToBitint(5015280)
27 84.258 MB -1.281 MB answer2 = pow(2, 5015279)
28 83.773 MB -0.484 MB result1 = convertIntToBitint(21000)
29 81.211 MB -2.562 MB answer1 = pow(2, 20999)