2013-04-10 21 views
5

私のローカルマシンでRedisを試してみました。これまでのところ、私は非常にゆっくり働いています。Windows/CでRedisを高速化する#

Iveは約14,000個のオブジェクトの配列を取得しており、それらを取得するたびにわずか3秒を要しています。これは明らかに生産目的では遅すぎます。

私は、オブジェクトの直列化を解除することに費やされる時間の大半は感じていますが、これを修正するために何かできるかどうかは本当にわかりません。

シリアル化せずに最初の場所に保存することはできますか? それに失敗した場合、デシリアライゼーションプロセスをスピードアップするためにできることはありますか?私はISerializationを実装しましたが、何の違いもないようです。

参考のために、RedisのServiceStackアダプテーションを使用しています。

+0

[redis-benchmark](http://redis.io/topics) /ベンチマーク)? –

+0

他のデータストアに同じ14kオブジェクトを保持した結果はどうなりますか? – mythz

+0

オブジェクトの実際の逆シリアル化をタイミング化しようとしましたか?たとえば、それらをすべてロードし、現在の時刻をチェックし、デシリアライズし、時間差をチェックします。それが遅い場合は、別のシリアル化メソッドを試してください。 BSONは、迅速なシリアル化/デシリアライゼーションを念頭に置いて構築されています。 –

答えて

3

測定しない限り、あなたはわかりません。

[出典:!1992年頃、鉱山の賢明DEV」マネージャー、]

なって犯人に指を指し前に、あなたは最初のプロファイル/パフォーマンスの問題がどこにあるかを正確に判断するために、あなたのコードを測定する必要があります。その後、修正を実装し、再測定します。あなたのperfが満足できるまで繰り返す。

Visual Studio's built-in profiler含めて使用するために利用できる多くのプロファイラは、順番にあなたのコードは、機器にTrace.WriteLine(...)Stopwatchを使用してみてください、また

他の人が(など、例えばRedGate's Ants profilerJetBrains' dotTraceまたはTelerik's JustTrace)アドインとして利用可能な、ありますデータアクセス操作の実行に要する時間とデータのデシリアライズにかかる時間を計算します。

FWIW、最近のRedisのビルドが、Windowsや他のOSで見ているようにゆっくりと実行された場合、私は驚くでしょう。さらに、SQL Server Express(2012)でも199000行が返され、1秒未満でCSVに格納できます。enter image description here