2016-06-16 11 views
0

len("1234567890")を呼び出すと、パフォーマンスは定数つまりO(1)、または文字列の長さ(文字列の長さに応じてO(n)この例では、文字列の長さはn = 10です)。一定のパフォーマンスの場合、なぜですか?線形のパフォーマンスの場合、どのように文字列の長さを取得するパフォーマンスを向上させるためのアイデアですか?ありがとう。パフォーマンスはPython 2.7で文字列の長さを取得する

Python 2.7を使用しています。

に関して、 林

+2

あなたは解決しようとしている問題は何ですか? –

+2

ここに記載されているようにO(1)です:http://stackoverflow.com/questions/1115313/cost-of-len-functionなぜですか?私は他の誰かのためにそれを残します。 –

答えて

2

はそれを確認してください:

C:\>py -m timeit -s "x='a'*1000" "len(x)" 
10000000 loops, best of 3: 0.0959 usec per loop 

C:\>py -m timeit -s "x='a'*10000" "len(x)" 
10000000 loops, best of 3: 0.0902 usec per loop 

C:\>py -m timeit -s "x='a'*100000" "len(x)" 
10000000 loops, best of 3: 0.0927 usec per loop 

をそれはO(1)です。文字列のサイズは、作成時にオブジェクトに格納されます。

+1

これは、stdoutへの出力などの使用のために文字列の長さを保存しなければならなかったアセンブリを思い出させます。 –

+1

@MoonCheesez、それはすべての大会です。代わりにヌル終了文字列を使用するアセンブリを書くことができますが、長さを取得する代わりにO(n)になります。 –

+0

ありがとうございましたマーク、優秀な返信、投票アップ、あなたの回答を回答としてマークしてください。 –

関連する問題