2013-04-10 2 views
5

Im экспериментирует с Redis на моей локальной машине. Пока у меня есть работа, хотя очень медленно.Ускорение Redis на Windows/C#

Ive получил массив из примерно 14 000 объектов, и получение их занимает всего более 3 секунд каждый раз, что явно слишком медленно для производственных целей.

У меня такое чувство, что большая часть времени проведена на де-сериализации объектов, но я не уверен, есть ли что-нибудь, что я могу сделать, чтобы исправить это.

Могу ли я хранить их в первую очередь без их сериализации (если это имеет смысл)? В противном случае, могу ли я что-нибудь сделать, чтобы ускорить процесс десериализации? Я реализовал ISerialization, но, похоже, это не имеет никакого значения.

Для справки im, используя адаптацию ServiceStack для Redis.

+0

Вы получаете разные результаты с помощью [redis-benchmark] (http://redis.io/topics)/тесты)? –

+0

Каковы результаты сохранения одних и тех же объектов 14k в других хранилищах данных? – mythz

+0

Вы пытались синхронизировать фактическую де-сериализацию объектов? Например, загрузите их все, проверьте текущее время, де-сериализуйте их, проверьте разницу во времени. Если он медленный, попробуйте другой метод сериализации. BSON построен с быстрой сериализации/де-сериализации в виду, возможно, это будет работать лучше. –

ответ

3

Если вы не измеряете, вы не узнаете.

[Источник: Мудрая DEV»менеджер шахты, около 1992]

Перед указывая пальцами на предполагаемых преступников, вы должны сначала профиль/измерить ваш код, чтобы определить, где именно ваш вопрос производительности. Затем выполните исправление и повторите измерение. Повторяйте, пока ваш перфект не будет удовлетворительным.

Есть много профайлеров использовать, в том числе Visual Studio's built-in profiler, другие доступны в качестве надстроек (например, RedGate's Ants profiler, JetBrains' dotTrace или Telerik's JustTrace и т.д.)

В качестве альтернативы, попробуйте использовать Trace.WriteLine(...) и Stopwatch для инструмента код для того, чтобы определить, как долго выполняются операции доступа к данным, и сколько времени требуется для де-сериализации данных.

FWIW, я был бы удивлен, если бы недавняя сборка Redis работала так же медленно, как вы видите в Windows или любой другой ОС. Черт, даже SQL Server Express (2012) может возвращать 199000 строк и хранить их в CSV менее чем за 1 с: enter image description here

Смежные вопросы