Я разрабатываю приложение на фондовом рынке в виде окон с использованием .net framework 4.0. Я извлекаю тики из обмена в реальном времени. Я могу получать тики в режиме реального времени. В моем сценарии мне нужно создать поток, который будет писать в реальном времени фиды в общей коллекции & другой непрерывный фоновый поток будет извлекать его из коллекции & делает дальнейшую обработку. Для этого я использую комбинацию ConcurrentDictionary и ConcurrentQueue. Имя символа конатинов & Значение содержит ConcurrentQueue. Так оно и было реализовано. Check first answerКак хранить данные в реальном времени
Это прекрасно работает, моя единственная забота - это задержка. Этот процесс вызывает задержку в 1 секунду, поскольку цены на акции должны колебаться в режиме реального времени. Может ли этот сценарий быть реализован какой-то другой логикой или я могу каким-то образом улучшить производительность ConcurrentDictionary или ConcurrentQueue, чтобы избежать задержек?
Вы не сделали никакого диагноза. Начните с основ: что именно вызывает задержка? Конфликт блокировки или другие накладные расходы синхронизации? Или ваша собственная обработка? – millimoose
(Если это не C#, и если вам не нужна архивирование данных, я бы предложил посмотреть на rrdtool, который представляет собой базу данных, явно предназначенную для хранения фиксированного количества записей с высокой производительностью.) – millimoose
Запись или чтение from concurrentDictionary или concurrentqueue вызывает задержку – Tuscan