text_iarchiveよりもbinary_iarchiveを使用した場合のパフォーマンス上の利点はありますか?私はbinary_iarchiveが移植性がなく、text_iarchiveが移植可能であることを知っているだけです。stl :: mapをファイルに直接書き込んで、後で読み取ることができるシリアル化ライブラリを探しています。
2 に答える
テストケースを書いてプロファイリングしてみませんか?ただし、たとえばテキストは10バイト(80ビット)を占める可能性があるため32ビットであるため、バイナリの方が高速であると思いint
ますが、バイナリでは4バイトになります。一方、これは、ほとんどの値が999(10進数)未満の場合、テキストを使用する方が速い可能性があることを意味します。とにかく、いくつかの典型的なデータセットとプロファイルを実行して、何が最適かを確認してください。
次に、たとえば、boost::serialization
書き込まれた内容とポインタを処理する必要があるかどうかを追跡するために、オーバーヘッドを追加します。
ただし、ファイルI / Oは通常非常に遅いため、パフォーマンスが懸念される場合は、ファイルからできるだけ少ないバイトを読み取ることをお勧めします。
一方、プログラムでファイルを1回読み取る場合、つまりファイルI / Oが遅い場合は、全体的なパフォーマンスに影響を与えることはありません。ただし、64ビットプログラムから32ビットプログラムに数値を安全に移植できる保証はないことを忘れないでください。64ビットシステムに64ビットint
があり、32ビットシステムに32ビットint
がある場合、テキストアーカイブを使用しても問題が発生する可能性があります。
テキストアーカイブは、バイナリアーカイブよりもいくらか大きくなります。移植性が主な関心事である場合は、ポータルバイナリアーカイブの使用を検討してください。