これら2つの異なるデータ型を使用する際にどのようなランタイムの違いが予想されるのかという一般的な質問です。小数点のPythonとfloatランタイム
私のテスト:
test = [100.0897463, 1.099999939393,1.37382829829393,29.1937462874847272,2.095478262874647474]
test2 = [decimal.Decimal('100.0897463'), decimal.Decimal('1.09999993939'), decimal.Decimal('1.37382829829'), decimal.Decimal('29.1937462875'), decimal.Decimal('2.09547826287')]
def average(numbers, ddof=0):
return sum(numbers)/(len(numbers)-ddof)
%timeit average(test)
%timeit average(test2)
ランタイムの違いは次のとおりです。
1000000ループ、3の最高:ループあたり364ナノ秒
10000ループ、3の最高:ループあたり80.3マイクロ秒
だから小数点を使うことは浮動小数点を使うよりも約200倍遅かった。このタイプの違いは、どのデータ型を使用するかを決める際に、私が期待しなければならない線に沿っていますか? Decimal
がフルスカラー/ソフトウェア実装を使用一方
これは、 'float'というPython型がCで深く実装されているのに対し、' decimal'はPythonインタプリタに組み込まれていないモジュール/パッケージのように見えるからです。 – linusg