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