Сравнение скорости по LUA и DDE

Страницы: 1
RSS
Сравнение скорости по LUA и DDE
 
Уважаемые форумчане! Имеется ли информация по сравнению скорости передачи информации через LUA и DDE?
Есть старый робот написанный на С++(без доп. библиотек) принимающий данные по DDE.
Для увеличения скорости он позиционно зависим от порядка полей в таблице.
Хочу попробовать LUA с передачей инфы через MappedFile, но хотелось бы уточниться насколько потеряю/приобрету в скорости передачи? Для сравнения, скорость простого С++ через DDE выше скорости передачи по C#(c внешними библиотеками) более чем в 8 раз... Стоит ли овчинка выделки? 8)
 
зависит от реализации сохранения данных  с использованием DDE
колбек луа получает данные раньше DDE
Но в целом луа будет медленнее СИ
Есть свои особенности в каждом варианте
Но в итоге хрен редьки не слаще.
 
Спасибо, Николай. Значит лучше ничего не трогать в работающей системе.
Сделали бы лучше какой нибудь нормальный интерфейс, а то для доступа к таблицам приходится пользоваться недокументированными возможностями 8)
Оно конечно интересно, и повышает самооценку,но при разрастании системы + поддержка у нескольких пользователей всего этого становится обременительно.
А делать винегрет из QPILE/LUA + хуки - ну мракобесие это))) Так что оставлю пока хуки+DDE
 
Цитата
Alex Alex пишет:
Спасибо, Николай. Значит лучше ничего не трогать в работающей системе.
Сделали бы лучше какой нибудь нормальный интерфейс, а то для доступа к таблицам приходится пользоваться недокументированными возможностями
Оно конечно интересно, и повышает самооценку,но при разрастании системы + поддержка у нескольких пользователей всего этого становится обременительно.
А делать винегрет из QPILE/LUA + хуки - ну мракобесие это))) Так что оставлю пока хуки+DDE
А, пардон, хуки какую роль выполняют?
 
Цитата
Imersio Arrigo пишет:
Цитата
Alex Alex пишет:
Спасибо, Николай. Значит лучше ничего не трогать в работающей системе.
Сделали бы лучше какой нибудь нормальный интерфейс, а то для доступа к таблицам приходится пользоваться недокументированными возможностями
Оно конечно интересно, и повышает самооценку,но при разрастании системы + поддержка у нескольких пользователей всего этого становится обременительно.
А делать винегрет из QPILE/LUA + хуки - ну мракобесие это))) Так что оставлю пока хуки+DDE
А, пардон, хуки какую роль выполняют?
Перехват событий таблиц Quik
 
Цитата
Alex Alex пишет:
Перехват событий таблиц Quik
С этой точки зрения луа конечно лучше так как VM LUA уже сидит внутри QUIK
 
Цитата
Alex Alex пишет:
Перехват событий таблиц Quik
С какой целью?
 
Цитата
Imersio Arrigo пишет:
Цитата
Alex Alex пишет:
Перехват событий таблиц Quik
С какой целью?
С целью быстрого доступа к данным :)   Реализация 2008года- тогда баловался скальпом))  Сейчас писал бы на LUA, разумеется.  Но для полной переделки нужен серьезный аргумент. Мнение Н. Камынина достаточно авторитетно для меня, поэтому по совокупности проект на LUA откладываю :)  Хотя и время есть и желание, но... если только тестики погонять-посмотреть)
 
Хочу заметить еще следующее:
-----------------------------------------
LUA удобнее тем, что через колбек приходит каждая запись таблицы сделок отдельно,
в то время как в DDE пакетом.
При включении квика в конце сессии, пакет DDE сначала готовится квиком, а потом пуляется всем желающим.
В LUA принимаемый пакет передается в колбек построчно перед записью этой строки в таблицу всех сделок.
--------------------------------
Полагаю, что даже для скальпинга луа может вполне подойти,
потому что проблема будет скорее всего в скорости канала,
очереди на сервере
и скорости реакции ОС компа.
--------------------------
Последнее время на Си делаю лишь то,
чего нет в луа - это синхронизация потоков,скриптов,
измерение коротких временных интервалов
ну и прочие мелочи
 
Цитата
Николай Камынин пишет:
Хочу заметить еще следующее:
-----------------------------------------
LUA удобнее тем, что через колбек приходит каждая запись таблицы сделок отдельно,
в то время как в DDE пакетом.
При включении квика в конце сессии, пакет DDE сначала готовится квиком, а потом пуляется всем желающим.
В LUA принимаемый пакет передается в колбек построчно перед записью этой строки в таблицу всех сделок.
--------------------------------
Полагаю, что даже для скальпинга луа может вполне подойти,
потому что проблема будет скорее всего в скорости канала,
очереди на сервере
и скорости реакции ОС компа.
--------------------------
Последнее время на Си делаю лишь то,
чего нет в луа - это синхронизация потоков,скриптов,
измерение коротких временных интервалов
ну и прочие мелочи
Попробую в ближайшие пару-тройку недель LUA, по результатам отчитаюсь) А насчет скальпа - за 10 лет на рынке понял, что от скальпа нужно взять только способ входа в позицию. Большее значение имеет анализ данных. На Си я делаю ВСЮ обработку поскольку думаю, что глюков меньше на потоках+доступ к volatile переменным чище. Вернее все под контролем и прозрачно))) В самом начале вообще хотел запулить всё это под QNX :D  ( с целью распараллеливания приема-вычислений) Но более опытные товарищи покрутили пальцем у виска)))
 
Цитата
Alex Alex пишет:
С целью быстрого доступа к данным
Это все понятно. Мне непонятно зачем хуки вешать.
Ведь данные исправно едут по дде безо всяких лишних приседаний.
Интервал обновлений 10мс.
Отправляется сначала таблица целиком, потом построчные изменения.
ЧЯДНТ?
 
Цитата
Imersio Arrigo пишет:
Это все понятно. Мне непонятно зачем хуки вешать.
Ведь данные исправно едут по дде безо всяких лишних приседаний.
Интервал обновлений 10мс.
Отправляется сначала таблица целиком, потом построчные изменения.
ЧЯДНТ?
скажу из своего опыта,
когда-то давно,
до появления LUA я вешал хуки для перехвата событий в окнах
и  управления вводом данных через
различные интерфейсы КВИК из других приложений.
Например, задача получения списка инструментов, на которые подписан квик,
управление параметрами графиков. автоматическое открытие стаканов и графиков ну и т д
Но прогресс налицо, теперь это все в прошлом.
 
Цитата

Николай Камынин пишет:
скажу из своего опыта,
когда-то давно,
до появления LUA я вешал хуки для перехвата событий в окнах
и управления вводом данных через
различные интерфейсы КВИК из других приложений.
Например, задача получения списка инструментов, на которые подписан квик,
управление параметрами графиков. автоматическое открытие стаканов и графиков ну и т д
Но прогресс налицо, теперь это все в прошлом.
т.е. речь о временах, когда Trans2Quik не позволяла этого делать?
и хуки вешались для управления квиком извне?
 
Цитата
Imersio Arrigo пишет:
Цитата

Николай Камынин пишет:
скажу из своего опыта,
когда-то давно,
до появления LUA я вешал хуки для перехвата событий в окнах
и управления вводом данных через
различные интерфейсы КВИК из других приложений.
Например, задача получения списка инструментов, на которые подписан квик,
управление параметрами графиков. автоматическое открытие стаканов и графиков ну и т д
Но прогресс налицо, теперь это все в прошлом.
т.е. речь о временах, когда Trans2Quik не позволяла этого делать?
и хуки вешались для управления квиком извне?
Прошу прощения, что отвечаю с задержкой. Выходные))) Раньше Квик не давал стакан по DDE. Вот и приходилось пускаться во все тяжкие :) .
 
И в случае хуков  Trans2Quik становился попросту ненужным.
 
Провел сравнительный анализ по передаче данных из LUA Quik в свою DLL, и далее в поток робота.
Везде использовал CreateMapFile. Разница во времени при различных способах синхронизации следующая:

1. Без событий. Поток постоянно опрашивает переменную, отвечающую за Lock области памяти. 2млн пересылок структуры по 64байта - время 1.49 сек.
2. С использованием Event - 2млн пересылок структуры по 64байта - время 8.76 сек.


Для сравнения через SendMessage: 2млн пересылок структуры по 64байта - время 23.59 сек.
 
Также в праздники сравнил скорость передачи таблицы всех сделок - примерно 250.000 записей.
Через DDE - 17.3 сек, через LUA (через Event) - 164,3 сек.
Сравнение разумеется некорректно из-за блоковой передаче при DDE :smile:
 
Цитата
Alex Alex пишет:
Также в праздники сравнил скорость передачи таблицы всех сделок - примерно 250.000 записей.
Через DDE - 17.3 сек, через LUA (через Event) - 164,3 сек.
Сравнение разумеется некорректно из-за блоковой передаче при DDE
Начнем сначала (Если ошибаюсь, поправьте).
Обычно имеем два вида передачи данных
1) Реальное время
2) накопленная история.
В первом случае, принятые терминалом текущие данные ТВС
сначала вызовут колбек,
потом запишутся в ТВС
потом поступят на DDE
Т е DDE не могут передаваться раньше.
DDE - это передача данных через  блок памяти.
-------------------------
Далее у Вас задействованы два одинаковых механизма записи в  MapFile.
---------------------
Не знаю как Вы реализовали передачу данных и запись
Но существенные потери у Вас будут при нырянии в функции VMLua, так как там все очень сильно накручено с проверками индексами и т д
--------------------------
Попробуйте сравнить время записи и чтения какой-либо переменной на LUAс временем записи и чтения ячейки памяти на CИ.
 
когда читаем историю,
то есть следующий момент, не знаю учли ли Вы это
терминал сначала готовить массив для передачи по DDE потом передает
у меня получалось примерно так (где-то есть на форуме) :   8 секунд готовит 2 секунды передает
А как у Вас получается?
Страницы: 1
Читают тему
Наверх