Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
QuadMan
1

Работа с большим объемом данных в реальном времени

27.11.2013, 18:48. Показов 2718. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Недавно решил перевести один проект с Delphi на C#.
Проект связан с получением и обработкой данных (в реальном времени, на скоростях порядка 15-20 МБ/с). Понятно, что в данном контексте, C# не лучший выбор, но Delphi перестал развиваться, как язык и захотелось идти в ногу со временем.. но я не об этом.

Проект грубо говоря, представляет из себя два потока - один поток чтения данных из устройства (по USB), другой поток - обработка данных.
В потоке чтения данные записываются в большой кольцевой буфер (порядка 30-40 МБайт), поток обработки, когда есть время забирает данные из кольцевого буфера и декодирует их.

Мне казалось, что в C# должна быть нативная поддержка кольцевого буфера, но, его среди стандартных классов я не нашел.
Тогда интересно, как реализованы MemoryStream, UnmanagedMemoryStream, Queue - неужели все эти классы будут выделять дополнительную память при выходе указателя записи за пределы допустимой области.

Также много вопросов вызывает нежелательность использования указателей - сильно ли пострадает производительность, если оперировать массивами и индексами?
Читал про fixed и unsafe - но пока не понял, как это применить к моей задаче. Все-таки в Delphi, C++ указатели свободно передаются, а тут - везде нужно метки ставить дополнительные... жутко неудобно получается.

Может быть у кого-то есть опыт работы с большими объемами данных - как лучше организовать работу?

Спасибо!
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2013, 18:48
Ответы с готовыми решениями:

Работа с большим объемом данных
Всем привет! Всегда создавал коллекцию List<List<xxx>>, заносил в нее данные из txt файла, а потом...

Работа с большим объемом текста: какой тип данных выбрать
У меня есть метод замены текста public void ReplaceAllStrings(string strToFind, string replaceStr)...

работа с большим объемом данных
большим я называю от 300000Rx50C судя по информации из диспетчера задач происходит накопление...

Работа с большим объёмом данных
Приветствую всех! На днях столкнулся с такой проблемой: необходимо отправить на сервер файл...

1
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
27.11.2013, 20:31 2
15-20 МБ/с по USB?
Буффер 30-40 МБайт неоправданно большой, с ним трудно работать, оптимизируйте операцию декодирования.
MemoryStream за кулисами обыкновенный массив byte[], размер ограничен фреймворком.
С большими объемами данных работа ведется традиционно: chunk by chunk. Как лучше организовать работу трудно сказать слишком мало вводных данных. В таких неопределенных задачах я добавляю дополнительный класс для анализа производительности и ихменения размера промежуточного буффера.
0
27.11.2013, 20:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2013, 20:31
Помогаю со студенческими работами здесь

Работа с большим объемом данных
Коллеги, подскажите по такому вопросу. Есть выборка, несколько миллионов записей. Каким образом...

Работа с большим объемом данных
Всем привет! Работа с большим объемом данных заставляет задуматься над всевозможными способами...

Работа с большим объемом данных
Имеется загруженное изоображение с помощью opencv. Задача: вывести цвета изображения с из...

QtSerialPort Работа с большим объемом данных
Добрый день. Я пишу приложение, которое работает с последовательным портом при помощи...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru