struct.packのパフォーマンスのばらつきが大きいのはなぜですか?

トマス・ジョンソン

のパフォーマンスをテストすると、次の結果が得られますstruct.pack

In [3]: %timeit pack('dddd', 1.0, 1.0, 1.0, 1.0)
The slowest run took 578.59 times longer than the fastest. This could
mean that an intermediate result is being cached 
1000000 loops, best of 3: 197 ns per loop

最も遅い実行が578倍遅いのはなぜですか?packは内部キャッシュを実行していますか、それとも何らかのCPUレベルのキャッシュの結果ですか、それとも他の何かですか?

Bakuriu

IPythonプロファイラーは的を射ています。結果は確かにキャッシュされます(少なくとも一部のPythonバージョンでは)。たとえば、Python 2.7.6では、関数が定義されている関連コードをここ見つけることができますcache_struct

この関数はキャッシュを検索して、最近指定された形式が使用されたかどうかを確認Structし、新しいインスタンスを作成する代わりに関連するインスタンスを返します(比較的コストがかかるようです)。

pack関数(およびその他)で使用されていることがわかります。


このコンテンツはコメントで投稿されましたが、答えに値します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

msgpackは、Pythonのstruct.pack()のパフォーマンスと同一の機能を向上させることができますか?

分類Dev

structに使用できるデフォルトのコンストラクターがないのはなぜですか?

分類Dev

struct.packがこれらの値を返すのはなぜですか?

分類Dev

StructのStruct

分類Dev

Python:Struct.pack(format、[...])、フォーマットはほぼ同じですが、パックされたデータのサイズが異なります

分類Dev

Swift structプロパティがフレームワークに表示されないのはなぜですか?

分類Dev

数値の大きい演算子(++)のパフォーマンスが低いのはなぜですか?

分類Dev

std :: is_struct型の特性がないのはなぜですか?

分類Dev

大きなNでHashSetのパフォーマンスが悪いのはなぜですか?

分類Dev

C struct tmがtypedefではないのはなぜですか?

分類Dev

fwrite(struct付き)が未知のシンボルを書き込むのはなぜですか?

分類Dev

struct.packがタイプがないように見える例外をスローするのはなぜですか?

分類Dev

offsetof(member)がsizeof(struct)と等しいのはなぜですか?

分類Dev

struct.packはそのパーツよりも長いですか?

分類Dev

&Struct {}とStruct {}の違い

分類Dev

Struct.newによって初期化されたインスタンスを拡張すべきではないのはなぜですか?

分類Dev

Struct.newによって初期化されたインスタンスを拡張すべきではないのはなぜですか?

分類Dev

List <struct>とList <class>のパフォーマンス

分類Dev

struct statのst_sizeフィールドが署名されているのはなぜですか?

分類Dev

struct.unpack()は、特定のフォーマットパターンを持つbytesオブジェクトから間違った長さを必要とします

分類Dev

Pythonでのstruct packの使用

分類Dev

struct statをファイルとフォルダーで分離しようとすると、なぜ2つの同一の配列があるのですか?

分類Dev

scanfを使用してstructの変数を直接初期化できないのはなぜですか?

分類Dev

Struct / Classのインスタンスの等価性チェックが異なるのはなぜですか?

分類Dev

小さなアレイよりも大きなアレイでは、C#SIMDのパフォーマンスの向上が低いのはなぜですか?

分類Dev

structキーワードが変数宣言とともに関数で再利用されたときに、コンパイラが文句を言わないのはなぜですか?

分類Dev

240以上の要素を持つ配列をループするとパフォーマンスに大きな影響があるのはなぜですか?

分類Dev

同じことをするこれらの2つのスクリプトの間にパフォーマンスに大きな違いがあるのはなぜですか?

分類Dev

配列リテラルとBufferArrayの間のパフォーマンスのギャップが非常に大きいのはなぜですか?

Related 関連記事

  1. 1

    msgpackは、Pythonのstruct.pack()のパフォーマンスと同一の機能を向上させることができますか?

  2. 2

    structに使用できるデフォルトのコンストラクターがないのはなぜですか?

  3. 3

    struct.packがこれらの値を返すのはなぜですか?

  4. 4

    StructのStruct

  5. 5

    Python:Struct.pack(format、[...])、フォーマットはほぼ同じですが、パックされたデータのサイズが異なります

  6. 6

    Swift structプロパティがフレームワークに表示されないのはなぜですか?

  7. 7

    数値の大きい演算子(++)のパフォーマンスが低いのはなぜですか?

  8. 8

    std :: is_struct型の特性がないのはなぜですか?

  9. 9

    大きなNでHashSetのパフォーマンスが悪いのはなぜですか?

  10. 10

    C struct tmがtypedefではないのはなぜですか?

  11. 11

    fwrite(struct付き)が未知のシンボルを書き込むのはなぜですか?

  12. 12

    struct.packがタイプがないように見える例外をスローするのはなぜですか?

  13. 13

    offsetof(member)がsizeof(struct)と等しいのはなぜですか?

  14. 14

    struct.packはそのパーツよりも長いですか?

  15. 15

    &Struct {}とStruct {}の違い

  16. 16

    Struct.newによって初期化されたインスタンスを拡張すべきではないのはなぜですか?

  17. 17

    Struct.newによって初期化されたインスタンスを拡張すべきではないのはなぜですか?

  18. 18

    List <struct>とList <class>のパフォーマンス

  19. 19

    struct statのst_sizeフィールドが署名されているのはなぜですか?

  20. 20

    struct.unpack()は、特定のフォーマットパターンを持つbytesオブジェクトから間違った長さを必要とします

  21. 21

    Pythonでのstruct packの使用

  22. 22

    struct statをファイルとフォルダーで分離しようとすると、なぜ2つの同一の配列があるのですか?

  23. 23

    scanfを使用してstructの変数を直接初期化できないのはなぜですか?

  24. 24

    Struct / Classのインスタンスの等価性チェックが異なるのはなぜですか?

  25. 25

    小さなアレイよりも大きなアレイでは、C#SIMDのパフォーマンスの向上が低いのはなぜですか?

  26. 26

    structキーワードが変数宣言とともに関数で再利用されたときに、コンパイラが文句を言わないのはなぜですか?

  27. 27

    240以上の要素を持つ配列をループするとパフォーマンスに大きな影響があるのはなぜですか?

  28. 28

    同じことをするこれらの2つのスクリプトの間にパフォーマンスに大きな違いがあるのはなぜですか?

  29. 29

    配列リテラルとBufferArrayの間のパフォーマンスのギャップが非常に大きいのはなぜですか?

ホットタグ

アーカイブ