Я подумал, что вопрос производительности C/С++ vs С#/Java был хорошо преодолен, а это означает, что я бы прочитал достаточно доказательств, чтобы предположить, что языки VM не обязательно медленнее, чем языки "близкого к кремнию". В основном потому, что компилятор JIT может выполнять оптимизацию, которую не могут статически скомпилированные языки.
Однако недавно я получил резюме от парня, который утверждает, что высокочастотная торговля на Java всегда избивается С++ и что он был в ситуации, когда это было так.
Быстрый поиск на сайтах вакансий действительно показывает, что кандидатам HFT нужны знания С++, и посмотрите на Wilmott форум показывает всех практикующих говоря о С++.
Есть ли какая-то особая причина, почему это так? Я бы подумал, что при современном сложном финансовом бизнесе предпочтение будет отдаваться языку виртуальной машины с безопасностью типа, управляемой памятью и богатой библиотекой. Производительность выше. Кроме того, компиляторы JIT становятся все лучше и лучше. Они могут выполнять оптимизацию по мере запуска программы, поэтому вы можете подумать, что они используют эту информацию во время выполнения, чтобы побить производительность неуправляемой программы.
Возможно, эти ребята пишут критические биты на С++ и вызывают их из управляемой среды (P/Invoke и т.д.)? Возможно ли это?
Наконец, есть ли у кого-нибудь опыт с центральным вопросом в этом, поэтому в этом домене неуправляемый код, без сомнения, предпочитается над управляемым?
Насколько я могу судить, ребятам из HFT нужно как можно быстрее реагировать на поступающие рыночные данные, но это необязательно hard realtime требование. Вы хуже, если вы медленны, это точно, но вам не нужно гарантировать определенную скорость для каждого ответа, вам просто нужно быстрое среднее.
ИЗМЕНИТЬ
Правильно, пара хороших ответов до сих пор, но довольно общая (хорошо пробитая земля). Позвольте мне указать, какие программы будут работать с HFT-ребятами.
Основным критерием является отзывчивость. Когда заказ попадает на рынок, вы хотите быть первым, кто сможет реагировать на него. Если вы опаздываете, кто-то еще может взять его перед вами, но у каждой фирмы есть несколько другая стратегия, поэтому вы можете быть в порядке, если одна итерация немного медленная.
Программа работает целый день, практически без вмешательства пользователя. Независимо от функции обработки каждой новой части рыночных данных выполняется десятки (даже сотни) раз в секунду.
Эти фирмы, как правило, не имеют ограничений относительно того, насколько дорого стоит оборудование.