Форум: "Основная";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];
ВнизКакой контейнер организовать? Найти похожие ветки
← →
AlexT (2011-01-05 17:21) [0]Приветствую. Нужен совет... Получаю непрерывный поток данных типа Double. Мне нужно организовать контейнер типа "очереди", например, на 1000 последних поступивших элементов этого типа, что бы анализировать их "на лету". Например сумму последних 10, среднее последних 100, максимальное последних 100 и т.д. Сигнал для анализа - поступление очередного Double. Скорость поступления до 30 тиков в сек. Что использовать? D2007.
← →
Игорь Шевченко © (2011-01-05 18:15) [1]массив double
← →
AlexT (2011-01-05 18:23) [2]А при записи в него последнего элемента первый стирать, а весь массив двигать?
← →
Anatoly Podgoretsky © (2011-01-05 18:34) [3]> AlexT (05.01.2011 18:23:02) [2]
Кольцевой буфер.
← →
AlexT (2011-01-05 18:45) [4]что взять за основу? Массив? Постоянно двигать 1000 или более элементов может накладно выйти.
← →
CrytoGen (2011-01-05 18:55) [5]30 раз в секунду это не накладно :)
Но если хотите помучиться, то можете попробовать TQueue из Contnrs.
← →
AlexT (2011-01-05 19:16) [6]Попробую массив двигать. надеюсь ресурса хватит, а то FireBird еще параллельно много чего делает здесь же...
← →
MBo © (2011-01-05 19:40) [7]двигать не надо. Про кольцевой буфер уже подсказали. Очередное число заносится в массив по индексу по модулю длины массива.
← →
AlexT (2011-01-05 19:51) [8]Спасибо. Я понял. При достижении конца массива, начинаем писать ему в начало. Храним только сам индекс, что б от него плясать. :)
← →
RWolf © (2011-01-06 10:11) [9]и да, двигать массив из тысячи double можно хоть 30 тысяч раз в секунду, процессор это особенно не нагрузит.
← →
AlexT (2011-01-06 15:00) [10]Но кроме сдвига его еще анализировать надо на разные глубины и по разным алгоритмам...
← →
RWolf © (2011-01-06 15:37) [11]об этом и речь — не особо важно, двигать или не двигать массив;
важнее, как данные будут обрабатываться.
← →
Дмитрий Белькевич (2011-01-06 17:28) [12]
> Но кроме сдвига его еще анализировать надо на разные глубины
> и по разным алгоритмам...
Еще и в параллельном потоке/потоках бы обрабатывать, думается мне...
Но это уже смотря по задаче (и по железу - по ядрам) - может и основной справится - не вижу всей задачи, не могу сказать.
← →
AlexT (2011-01-07 00:01) [13]Я на досуге взялся написать биржевого торгового робота. Цепляюсь к торговому серверу на РТС, там очень много таблиц, Открываю табл. "текущие котировки". После этого мне потоком сервер шлет по этой табл. апдейты - каждый из них - строка(массив примерно из 50 полей типа OleVariant). Частота до 30 апдейтов/сек.(по 1 инструменту!!!) Я, все это успешно наливаю к себе в FireBird для последующего анализа. Но есть необходимость параллельно с записью в базу оперативно просматривать только отдельные поля, например изменения цен и объемов для скальпинговых сделок. Такие дела.
← →
Palladin © (2011-01-07 04:02) [14]летать рожден - не ползай
← →
Германн © (2011-01-07 04:22) [15]
> AlexT (07.01.11 00:01) [13]
"Кольцевой буфер" устроил или нет?
Если нет, задай другой вопрос.
В конце концов тоже будет "кольцевой буфер", но более сложный.
А "двигать массив 30 тысяч раз в секунду" - это троешникам. Нынешние процессоры достаточно быстрые. :)
← →
AlexT (2011-01-07 10:04) [16]Кольцевой вполне устроит. Спасибо. Двигать не буду. Если можно не двигать то зачем? Если все в мире начнут без нужды двигать массивы, Сколько лишней энергии уйдет? Выбросы опять же...:)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c