ホームページ  >  記事  >  バックエンド開発  >  バイト ファイルを int64 スライスに読み取る最も効率的な方法は何ですか?

バイト ファイルを int64 スライスに読み取る最も効率的な方法は何ですか?

PHPz
PHPz転載
2024-02-09 11:36:09959ブラウズ

将字节文件读入 int64 切片的最有效方法是什么?

php エディター Zimo は、「バイト ファイルを int64 スライスに読み取る最も効果的な方法は何ですか?」という一般的な質問に答えます。バイトを変換する必要がある場合、ファイルが読み取られる場合、 int64 スライスに変換するには、次の方法を使用できます。まず、file_get_contents 関数を使用してバイト ファイルを読み取り、次に unpack 関数を使用してバイト ファイルを int64 スライスに解凍します。この方法はシンプルかつ効率的で、ニーズに合わせてバイト ファイルを int64 スライスにすばやく変換できます。この方法が皆さんのお役に立てれば幸いです!

質問内容

パックされた int64 ファイルがいくつかあります。それらは int64 スライスとしてメモリ内に必要です。問題は、ファイルを結合するとマシンのメモリ サイズの半分を超えるため、スペースが限られていることです。 Go の標準オプションは次のようになります:

リーリー

残念ながら、binary パッケージは、サイズ f.size()*8[]byte をすぐに割り当て、メモリ不足になります。

一度に各バイトを 1 つずつ読み取ってスライスにコピーすれば機能しますが、これでは遅すぎます。

理想的な状況は、[]byte[]int64 に直接変換し、コンパイラーに「OK、これらは整数になりました」と伝えることですが、明らかにそれはうまくいきません。の作品です。同様のことを実現する方法はありますか?おそらく安全でないパッケージを使用するか、絶対に必要な場合に c を追加しますか?

解決策

パックされた int64 ファイルがいくつかあります。それらは int64 スライスとしてメモリ内に必要です。問題は、ファイルを結合するとマシンのメモリ サイズの半分を超えるため、スペースが限られていることです。

go の標準オプションは次のようになります:

リーリー

残念ながら、バイナリ パッケージはすぐにサイズ f.size()*8 の [] バイトを割り当て、メモリ不足になります。

すべての関数は最小限のメモリを使用します。

リーリー

たとえば、amd64 (リトルエンディアン) アーキテクチャとリトルエンディアン データ (データ変換は必要ありません) で最大限の効率を得るには、readfileint64se を使用します。

バイトオーダーの誤謬 - ロブ・パイク
https://commandcenter.blogspot.com/2012/04/byte-order-fallacy.html

リーリー リーリー

以上がバイト ファイルを int64 スライスに読み取る最も効率的な方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。