как можно быстрее обработать сообщение об исправлении при отправке через quickfixj - PullRequest
3 голосов
/ 15 ноября 2011

У меня проблема со скоростью обработки в QuickfixJ. Я прочитал в этот вопрос , что можно обрабатывать 300 сообщений / сек. Я также видел в других местах цифры в тысячах. Мой код сеанса Quickfix получает список сообщений и отправляет их одно за другим через Sesssion.SendToTarget ();

Возможно, цикл, в котором я отправляю сообщения, замедляет меня, но мне было интересно, есть ли способ отправить список сообщений или ускорить процесс отправки этих сообщений. Также возможно, что, поскольку я захожу на экран, это замедляет меня. Могу ли я воспользоваться его безголовым подключением и записью в журнал файлов?

Ответы [ 3 ]

4 голосов
/ 03 декабря 2011

Я видел, как QuickFIX / J обрабатывал сообщения тысячами в секунду.Однако у вас будут проблемы с получением этой производительности в одном сеансе FIX.Сценарий, который я описываю, включает в себя несколько сеансов.Причина, по которой это имеет большое значение, заключается в том, что протокол FIX по сути является последовательным для каждого сеанса из-за порядковых номеров FIX.Это фактически означает, что у вас есть один поток, обрабатывающий сообщения, если у вас есть один сеанс.В случае нескольких сеансов механизм может использовать преимущества нескольких потоков и процессоров.

Вообще говоря, файловый ввод-вывод является основной нагрузкой.Ищите способы оптимизации доступа к файловой системе.Если вы запустите движок без регистрации и MemoryStore, вы увидите, что он довольно быстрый.Я бы не использовал его для приложений с крайне низкой задержкой, но это неплохо.

1 голос
/ 10 февраля 2012

Вход на экран очень сильно замедляет работу. При входе в систему на экране я делал 30-40 сообщений в секунду, а без регистрации - более 400. Так просто, ничего не отображать на экране. Также медленной частью процесса является ответ от Акцептора. Инициатору удается отправлять более 2000 сообщений в секунду, но ответ Акцептора замедляет весь процесс.

0 голосов
/ 15 ноября 2011

Вы создаете каждое сообщение в цикле, так как это может быть вашим дополнительным расходом?Это может быть сделано асинхронно, а затем сообщения отправляются, как и когда они завершены.Асинхронное ведение журнала устранит эти дополнительные издержки, если вы хотите минимизировать время отправки, просто убедитесь, что отправляете любые данные о времени в поток ведения журнала, чтобы они были точными при записи журналов.

...