このページでは、Cloud Healthcare API で DICOM データを扱う際のパフォーマンス向上のベストプラクティスを紹介します。
イメージ ビューアでフレーム/秒(FPS)を最大化する
healthcare-imaging-performance-test ツールは、Cloud Healthcare API からデータを pull する DICOM 医療画像ビューアに期待できる FPS をプレビューできるベンチマークを提供します。
同時リクエストの送信
最良の FPS パフォーマンスを得るために、複数のリクエストを同時に送信してください。たとえば、次の条件により、同時リクエストを 6 件から20 件にすると、FPS を 30 FPS から 60 FPS に改善できます。
- 圧縮なし
- DICOM データをすべて同じリージョンにする
- DICOM イメージのサイズを 0.5 バイトにする
1 回のリクエストでフレームを取得する
retrieveStudy
メソッドと retrieveSeries
メソッドは、1 回のリクエストで複数の DICOM ファイルを効率的に返します。これらのメソッドを使用すると、最適な数の同時リクエストを使用した場合と同じ速さで画像を取得できます。次の条件が満たされる場合、これらのメソッドは同時リクエストではなく、単一のリクエストで呼び出すことができます。
- クライアントがスタディ全体をメモリに格納することも、レスポンスをストリームとして解析して一度に 1 つの DICOM インスタンスを処理することもできる場合。
- 取得した画像の順序をカスタマイズする必要がない場合。
ウェブビューアのパフォーマンスを向上
以降のセクションの内容は、ウェブビューアの使用時に DICOM 画像を取得する場合に適用されます。
同時リクエストの最大数を増やす
ウェブベースのビューアを使用する場合、ほとんどのブラウザではホストごとに最大接続数が適用されます。通常、この数は 6 です。ただし、実際には、同時リクエストの最大数に制限はありません。理由は次のとおりです。
- サーバーが HTTP/2 をサポートしている場合、ほとんどのブラウザでは、デフォルトで HTTP/2 が使用されます。
- HTTP/2 は、すべてのリクエストで単一の接続を使用します
たとえば、Cornerstone.js を使用してビューアを構築する場合、Cornerstone.js の構成時に maxSimultaneousRequests
に変更することで、同時リクエストの最大数をビューアに最適な数に変更できます。
ウェブワーカーの使用
JavaScript はシングル スレッド言語であるため、同時実行パターンを適用する場合は特に注意が必要です。ウェブワーカーを使用して、DICOM 画像と HTTP リクエストの両方を処理できます。
たとえば、HTTP リクエスト処理をウェブ ワーカーに変更する場合、30ミリ秒のリクエスト処理のオーバーヘッドと仮定して、ビューアの FPS を 30 FPS から 60 FPS に効果的に倍増できます。