2009-04-08 24 views

答えて

1

配列内のバイトが必要な場合は、結果ストリームから配列にすべてのバイトをストリーミングする必要があるため、すべてのメソッドがほぼ同じになります(SqlClientクラスはこれを行うあなたのために)。

ストアドプロシージャまたはデータベーステーブルのフィールドにvarbinary出力パラメータがあるかどうかは関係ありませんが、返される結果セットに関するスキーマ情報がないため、ストアドプロシージャが少し速くなります。ただし、これはシャットダウンしているデータのサイズに比べてごくわずかです。

パフォーマンスの向上が必要な場合は、SequentialAccessが設定されたDataReaderを使用し、返されるフィールドのGetBytesをリーダーで呼び出す方がよい場合があります。これを呼び出すことによって、必要なバイトだけを取り出し、データをチャンクで処理することができます。

これは重要なことです。なぜなら、サイズが2MBの配列の配列を割り当てることに問題があるからです。一般的に言えば、という連続したメモリブロック(これは配列なのです)をに割り当てることは悪い考えであり、パフォーマンスを低下させます。可能であれば、小さな塊でデータを処理します。

+0

GetBytesを含むバッファを使用すると、2MBの合計サイズを考慮すると、どの程度のバッファサイズが適切ですか? – Larsenal

+0

@Larsenal:これは言うまでもありませんが、あなたはアプリのパフォーマンス特性に関してこの決定を下すことができます。チューニングの問題です。おそらく、処理したいデータが十分に大きいと仮定して、数KBのどこかで始めることにします。 – casperOne

関連する問題