イメージと小さなビデオファイル(約5MB、10MB未満)をRESTサービスに送信する必要があります。これは私が作成します。 私はこのタスクを達成するためにByte []またはStreamを使うべきかどうか疑問に思っています。 Byte []とStreamを使用する間の転送ファイルサイズの目安は何ですか?バイト配列を使用するタイミングとストリームを使用するタイミング
答えて
トランザクションにコミットする予定の空きメモリの量は、唯一の実際の制約です。
5Mファイルをお持ちの場合は、RAMにすべてをロードする必要があります。これには5Mがかかります。
ストリーミングする場合は、ファイルから小さいチャンクを再利用可能なバッファに読み込んで、HTTPストリームに書き込むことで、はるかに少ないメモリを使用できます。
最終的には、いずれかの方法でストリームを送信します。
大量のbyte[]
として、コントロール外の別のソースからデータを受け取った場合は、不都合な場合を除いて、処理のためにそのフォームに保存しておき、ネットワークストリームにプッシュさせるこの線。
ストリームとして受け取った場合、別のストリームにプッシュされただけで大量のbyte[]
になります。 4〜8 kiB(4〜8ではなく4または8)のバッファを使用してください。これは、メモリ全体のページの同時発生回数にいくつかの利点があります。
ストリームを自分で作成している場合、ストリームはほとんどの場合(バイナリやテキストライタでラップして処理します)、より効率的です。
もっと一般的には、8KB以上のバッファがストリームに書き込まれたり、ストリームから読み込まれたりしている場合、遅いと思われる場合は最初に変更を試みます。
バイト配列またはストリームを選択する際の一般的なテストは、データがあるかどうか、先頭から何バイトまでのデータがあるか、この数値が所定の目的に合っているかどうかによって異なります。
たとえば、ローカルマシンで使用できる小さなアイコンファイル(50KB未満)を扱っていてファイルサイズがわかっている場合は、バイト配列を使用します。
逆に、難しいと思われるムービーファイルを使用している場合、2GBのコンテンツを同時にメモリに保存する場合は、ストリームを使用してください。
ストリーミングは、長さが正面からわからない大きなデータセットまたはデータを処理する場合に最適です。
- 1. タスクを使用するタイミングとスレッドを使用するタイミング
- 2. undef_methodを使用するタイミングとremove_methodを使用するタイミングは?
- 3. assert()を使用するタイミングとtry catchを使用するタイミング
- 4. viewDidLoadを使用するタイミングとawakeFromNibを使用するタイミング
- 5. Codeigniter redirect()を使用するタイミングと、$ this-> load-> viewを使用するタイミング
- 6. Requirejsを使用するタイミングとバンドルされたjavascriptを使用するタイミング
- 7. コマンドウィンドウを使用するタイミング
- 8. ビジュアルディフィーリングとユニファイドディフパッチファイルを使用するタイミングは?
- 9. isInstanceOfを使用するタイミングと、(Scalaで)match-case-statementを使用するタイミングを教えてください。
- 10. "as"キーワードを使用するタイミングと、キャストを使用するタイミングを教えてください。
- 11. JDKを使用してアプリケーション(javaw.exe)を起動するタイミングと、JREを使用するタイミング
- 12. AppEngine - 親関係を使用するタイミング
- 13. PageRoadでPreRenderを使用するタイミングは?
- 14. windbgを使用してデバッグするタイミング
- 15. Rでペアリストを使用するタイミングは?
- 16. 「getResourceAsStream」メソッドを使用するタイミングは?
- 17. プラグインでNPN_ReleaseVariantValueを使用するタイミングは?
- 18. Springでアプリケーションコンテキストを使用するタイミング。
- 19. ExecuteScalar、ExecuteReader、ExecuteNonQueryを使用するタイミングは?
- 20. Springでjavax.inject.Providerを使用するタイミングは?
- 21. ColdFusion - 「リクエスト」スコープを使用するタイミング
- 22. Dartでインターフェイスを使用するタイミングは?
- 23. Backbone.View vs. Backbone.Marionette.ItemViewを使用するタイミングは?
- 24. plugins.withType(somePlugin)を使用するタイミング.whenPluginAdded
- 25. getAutowireCapableBeanFactory()。autowireBean(someBean)を使用するタイミングは?
- 26. スキームまたはラケットで関数を使用するタイミングとマクロを使用するタイミング
- 27. Hadoopを使用するタイミングは、ElasticSearchをグループ/ファセットに使用するタイミングですか?
- 28. コンパイル済みのLINQと通常のLINQを使用するタイミング
- 29. Regexと組み込みのStringメソッドを使用するタイミング
- 30. MySQLでキーワードINNERとOUTERを使用するタイミングは?