たとえば、int
およびstr
オブジェクトのように、コード全体で使用される数値変数がいくつかあるとします。だから、私はそれらを保存するためにどのタイプを使用すべきですか?ここでstrとintの間のキャストのどちらの方がPythonで速いのですか?
は例です:
class Nums:
a = 1 # stored as int
b = '2' # stored as str
print(int(Nums.b) + 5) # 7
print(str(Nums.a) + 'Hello') # 1Hello
あなたが見ることができるように、ストレージ、および例の用途の2つの選択肢があります。しかし、ここにあるように使用法はあまり定義されません。たとえば、クラス変数を繰り返し処理し、それらをすべて文字列に連結し、その商品を計算します。したがって、連結する必要があるときはint
として保存してstr
にキャストし、str
としてキャストしてから乗算する前にint
にキャストしますか?本当にstr
コールとして、
In [3]: %timeit int('56')
The slowest run took 12.92 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 360 ns per loop
In [4]: %timeit str(56)
The slowest run took 8.36 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 353 ns per loop
そして、私はこの結果を期待する:
いくつかの簡単な研究IPythonの%timeit
が、パフォーマンスはほぼ同じであることが示されているstr
にint
はほんの少し速くなる使用オブジェクトの__str__
メソッドを呼び出す一方、文字列を数値として読み取ることはより複雑になる可能性があります。何か本当の違いはありますか?その背後にある理由は何ですか?
私はあなたのプログラムは数値を使用している場合、あなたは確かにタイプint
としてそれらを格納する必要はPython 3.5について特に
である私たちは、それは本当に価値はない、いくつかのnsの話をしている期待していますディスカッションimho – sirfz
@ sirfzええ、これらのnsが私のプログラムに大きな違いを生み出すようなわけではありませんが、ここでの問題はより良い保管方法です。私たちが実際にどれほどの効率を得ているかにかかわらず、より効率的な理由は何ですか。 – Leva7