Страница: 1 | 2 |
Вопрос: Обработка в реальном времени
Добавлено: 13.04.09 20:31
Автор вопроса: aleha
Вопрос в принципе абстрактный, но из-за этого не менее актуальный для меня.
Мне необходимо в реальном времени обрабатывать массив с данными размерностью от нескольких тысяч до нескольких десятков тысяч. Как вы думаете на современной машине сможет ли программа пробегать по такому массиву с данными раза 2-3 за секунду? Или может быть есть какие-то более хитрые алгоритмы обработки больших объемов или специальные методы. Опять же повторюсь, пока что конкретики нету никакой, но точно уверен, что работы с этим объемом данных и БД не планируется. Может быть кто-то работал с такими задачами и поделится опытом.
Заранее спасибо.
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
VβÐ
Вопросов: 15
Ответов: 194
Web-сайт:
Профиль | | #1
Добавлено: 13.04.09 20:32
Смотря что ты с этим массивом делаешь - трассифировку с поддержкой каустики или просто обходишь
Номер ответа: 2
Автор ответа:
aleha
Вопросов: 8
Ответов: 19
Профиль | | #2
Добавлено: 13.04.09 20:44
обхожу по очереди каждый элемент, произвожу какие-то изменения в значениях этого элемента и так по кругу....
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 14.04.09 00:48
Жесть.
Номер ответа: 4
Автор ответа:
BG(Алексей)
Вопросов: 26
Ответов: 295
Профиль | | #4
Добавлено: 14.04.09 03:21
Номер ответа: 5
Автор ответа:
VβÐ
Вопросов: 15
Ответов: 194
Web-сайт:
Профиль | | #5
Добавлено: 14.04.09 06:10
Стотысячный массив чисел обходится 149 раз в секунду, строковой - 40 (учти, оператор & жрет много, лучше использовать вместо него Mid$). При этом я параллельно запустил рендеринг. Я думаю, на современной машине можно, и
P.S. Тестировал на Core2Quad, задействовал одно ядро.
Номер ответа: 6
Автор ответа:
aleha
Вопросов: 8
Ответов: 19
Профиль | | #6
Добавлено: 14.04.09 19:37
во, это уже дело интересное, надо бы теперь последовательно выяснить какие операторы и функции кушают меньше процессорного времени.
Номер ответа: 7
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #7
Добавлено: 15.04.09 22:08
Уже давно всё выяснено, погугли, найдешь.
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 15.04.09 23:24
Познакомься с языком ассемблера. Сложение двух чисел в регистрах, например, осуществляется за один такт, т.к. порядка 2 миллиарда раз в секунду.
Номер ответа: 9
Автор ответа:
aleha
Вопросов: 8
Ответов: 19
Профиль | | #9
Добавлено: 16.04.09 18:27
с ассемблером знаком, но к сожалению не умею писать приложения состоящие из кусочков, которые соответственно написаны на разных языках))
а на счет гуглить, то я и так постоянно гуглю. Просто чётких задач для гугления ещё нету, вот и собираю информацию предварительно.
Номер ответа: 10
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #10
Добавлено: 19.04.09 16:42
Если хорошо оптимизируешь, то будет нормально и на VB. Смотри сам, что будет эффективнее - учить ассемблер или оптимизировать прогу.
Номер ответа: 11
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #11
Добавлено: 20.04.09 01:02
Если хорошо оптимизируешь, то будет нормально и на VB
На VB6 нормально ты ничего не наоптимизируешь
Под .NET код предложенный вбд выполняется 390 раз за секунду на Core 2 Duo (правда я уж параллельно не запускал рендеринг с трасировкой каустики и рассчетом физики Вселенной). Т.е. примерно в 2,7 раз быстрее. К тому же при желании можно будет распараллелить с помощью ParallelFx что даст еще до двухкратного увеличения скорости если все правильно сделать.
2 aleha
Насчет оптимизации, вряд ли ты сможешь существенно оптимизировать код, перейдя от .NET к ассеблеру (безусловно, сможешь оптимизировать на несколько процентов, но в разы - вряд ли).
BG(Алексей), использование List я думаю тут мало чем может помочь
Номер ответа: 12
Автор ответа:
BG(Алексей)
Вопросов: 26
Ответов: 295
Профиль | | #12
Добавлено: 21.04.09 03:06
Т.е., я не говорю, что Generic.List(Of T), будет быстрее(но очень близок 100. Но компактней и более читаемый код это точно.
Номер ответа: 13
Автор ответа:
BG(Алексей)
Вопросов: 26
Ответов: 295
Профиль | | #13
Добавлено: 21.04.09 03:08
Вместо смайлика стоит знак процента и закрывающая скобка.
Номер ответа: 14
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #14
Добавлено: 21.04.09 03:30
BG(Алексей), List теоритически не может быть быстрее массива ни на каких операциях.
Функции поиска которые в нем используются, основаны на делегатах, это даст снижение производительности.
Номер ответа: 15
Автор ответа:
aleha
Вопросов: 8
Ответов: 19
Профиль | | #15
Добавлено: 21.04.09 21:12
Условия и вычисления обязательно будут присутствовать, конечно надо будет их как-то оптимизировать (может быть сделать таблицу предварительно готовых значений), но от условий не избавиться ни как и думаю в таком случае производительность упадёт очень сильно.