2013-04-10 34 views
5

我在本地機器上嘗試使用Redis。到目前爲止,我已經得到它的工作,儘管很慢在Windows/C上加速Redis#

我得到了大約14,000個對象的數組,每次只需要超過3秒的時間檢索它們,這對於生產目的來說顯然太慢了。

我有一種感覺,大部分時間花在解序列化對象上,但我不確定是否有任何事情可以糾正。

我可以將它們存儲在第一個位置,而無需將它們串行化(如果有意義的話)? 如果沒有,我能做些什麼來加速反序列化過程?我已經實現了ISerialization,但它似乎沒有任何區別。

參考我使用Redis的ServiceStack改編。

+0

您是否獲得與[redis-benchmark]不同的結果(http://redis.io/topics /基準)? – 2013-04-10 16:57:15

+0

在其他數據存儲中堅持同樣的14k對象的結果是什麼? – mythz 2013-04-10 17:15:41

+0

您是否嘗試計算對象的實際反序列化?例如,全部加載它們,檢查當前時間,對它們進行反序列化,檢查時間差異。如果速度很慢,請嘗試另一種序列化方法。 BSON建立在快速序列化/反序列化的基礎上,也許這會更好。 – 2013-04-10 22:17:08

回答

3

除非你測量,你不會知道。

[來源:我的一個明智的開發的經理,大約1992]

在所謂的罪魁禍首指向手指之前,你應該先配置文件/測量你的代碼,以確定究竟你的性能問題。然後執行修復並重新測量。重複,直到你的表演滿意。

有可使用許多廓線儀,包括Visual Studio's built-in profiler,別人爲了可作爲插件(如RedGate's Ants profilerJetBrains' dotTraceTelerik's JustTrace等)

或者,嘗試使用Trace.WriteLine(...)Stopwatch儀器代碼計算數據訪問操作執行多長時間以及將數據反序列化需要多長時間。

FWIW,如果最近的Redis版本的運行速度與您在Windows或任何其他操作系統上看到的一樣緩慢,我會感到驚訝。哎呀,即使SQL Server Express(2012)也可以返回199000行並以小於1秒的CSV格式存儲它們: enter image description here