java.io.InputStream には、2 つの主要な読み取り関数int read()とpublic int read(byte[] b, int off, int len) があります。
同様に、java.io.OutputStream には、write(b) と write((byte[] b, int off, int len))の 2 つの関数があります。
基本的な違いは分かるのですが、write(b)の記述を読むと「書き込むバイトは引数bの下位8ビット。bの上位24ビットは無視。」その場合、実際には、CPU が整数をロードする 32 ビット命令セットの残りの 24 ビットを無駄にしています。代わりに、他の書き込み ((byte[] b, int off, int len)) を使用すると、バイト配列のサイズのヒープ/スタックを占有します。高いスケーラビリティのためにどちらがうまく機能するかを考えようとしていますが、write(b) が 24 ビット (3 バイト) を浪費することを無視することはできません。一方、read/write(byte[] b, int off、int len)、スタックサイズが大きくなるリスクがあります。では、選択する最良のオプションは何ですか?
回避策として、InputStream と OutputStream を拡張し、32 ビットすべてを使用するために byte[4] を指定して read(b) と write(b) 関数をオーバーライドしようとしました。問題なく動作しますが、パフォーマンスが向上するかどうかを確認する必要があります。read/write(4, 0, int 4) を使用するのと非常によく似ています。
このトピックに関するヘルプ/コメントをいただければ幸いです。