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

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

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

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

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

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

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

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

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

Спасибо!
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2013, 20:31
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Использование Go (Golang) в Highload-проектах: преимущества и особенности
bytestream 25.01.2025
В мире высоконагруженных систем выбор правильного инструментария играет ключевую роль в успехе проекта. Go (Golang) представляет собой относительно молодой язык программирования, который быстро. . .
Откуда у float лишние цифры в конце дробной части. Представление чисел с плавающей точкой
bytestream 25.01.2025
При разработке программного обеспечения часто возникает необходимость работать с вещественными числами, которые содержат дробную часть. В современных компьютерных системах такие числа представляются. . .
Как использовать глобальную переменную в функции в Python
bytestream 25.01.2025
В программировании на Python глобальные переменные представляют собой особый тип переменных, которые доступны для использования во всех частях программы, включая различные функции, классы и модули. . . .
Как в цикле обойти все элементы map в Java
bytestream 25.01.2025
В разработке на Java одной из наиболее востребованных структур данных является интерфейс Map, который предоставляет эффективный способ хранения и управления парами "ключ-значение". Разработчики. . .
Для чего нужен UserManager.isU­serAGoat(­) в Android и как это использовать
bytestream 25.01.2025
В мире Android-разработки существует множество интересных и порой загадочных функций, о которых знают далеко не все разработчики. Одной из таких функций является метод UserManager. isUserAGoat(),. . .
Как обойти масси в JavaScript. Всё о циклах
bytestream 25.01.2025
JavaScript представляет собой мощный язык программирования, широко используемый в веб-разработке, где массивы и циклы являются фундаментальными концепциями для эффективной работы с данными. Массив в. . .
Как сделать, чтобы существующая ветка отслеживала удалённую в Git. Связывание локальных и удалённых веток
bytestream 25.01.2025
В разработке программного обеспечения системы контроля версий стали неотъемлемой частью процесса создания качественного программного продукта. Эти инструменты позволяют разработчикам эффективно. . .
Как проверить, что файл НЕ существует с помощью Bash
bytestream 25.01.2025
В системном администрировании проверка существования файлов является фундаментальной операцией, особенно при написании скриптов на Bash. Правильная обработка ситуаций, когда файл отсутствует,. . .
Как проверить, что строка пустая, неопределена или null в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript разработчики регулярно сталкиваются с необходимостью проверки строковых значений на различные состояния. Валидация данных является критически важным. . .
Как проверить существование ключа в объекте или массиве в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript программисты постоянно сталкиваются с необходимостью работать с объектами и массивами. Эти структуры данных являются фундаментальными элементами языка и. . .
Как создать ArrayList из массива (array) в Java
bytestream 25.01.2025
При разработке программного обеспечения на языке Java программисты часто сталкиваются с необходимостью эффективного управления наборами данных. Массивы и ArrayList являются двумя фундаментальными. . .
Как сгенерировать случайные целые числа (int) в указанном диапазоне в Java
bytestream 25.01.2025
В программировании генерация случайных чисел является важнейшим инструментом для решения множества практических задач. От создания игровых механик до реализации алгоритмов машинного обучения, от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru