5

ローカル マシンで Redis を試しています。これまでのところ、非常にゆっくりではありますが、動作しています。

私は約 14,000 個のオブジェクトの配列を取得しており、それらを取得するのに毎回 3 秒強かかります。これは明らかに、運用目的には遅すぎます。

費やされた時間の大部分はオブジェクトのデシリアライズに費やされていると感じていますが、これを修正するためにできることがあるかどうかはよくわかりません。

それらをシリアル化せずに最初に保存できますか(それが理にかなっている場合)? それができない場合、逆シリアル化プロセスを高速化するためにできることはありますか? ISerialization を実装しましたが、違いはないようです。

参考までに、Redis の ServiceStack 適応を使用しています。

4

1 に答える 1

3

測らないと分からない。

[出典: 1992 年頃の私の賢明な開発マネージャー!]

想定される犯人を指摘する前に、まずコードをプロファイリング/測定して、パフォーマンスの問題がどこにあるかを正確に判断する必要があります。次に、修正を実装して再測定します。パフォーマンスが満足のいくものになるまで繰り返します。

Visual Studio のビルトイン プロファイラーを含む、使用できるプロファイラーは多数ありますが、アドインとして利用できるものもあります (例: RedGate の Ants プロファイラーJetBrains の dotTraceまたはTelerik の JustTraceなど)。

または、 および を使用Trace.WriteLine(...)Stopwatchてコードを計測し、データ アクセス操作の実行にかかる時間とデータの逆シリアル化にかかる時間を計算してみてください。

FWIW、Redis の最近のビルドが、Windows やその他の OS で見られるのと同じくらい遅く実行された場合、私は驚かれることでしょう。SQL Server Express (2012) でも 199000 行を返し、1 秒未満で CSV に格納できます。 ここに画像の説明を入力

于 2013-04-27T00:42:44.240 に答える