Здравствуйте, SkyDance, Вы писали:
ОК>>А если несколько клиентов "вещают в сети?"
SD>К таким конфигурациям даже сами понятия latency (и тем более realtime, с обязательным жестким ограничением на время ответа) неприменимы в общепринятом смысле А главное, что это у вас такое, древний ethernet с коаксиальным кабелем?
Ну скажешь тоже.
Вот у тебя в сетке несколько фидов с разных бирж, все мультикастят — все равно нет latency?
lpc>>>Уже давно многие пишут на Java, в том числе и мы. Если заткнуть GC то производительность мало чем отличается от С++ (если вообше отличается). __>>а как вы это делаете? используете вместо new только предварительно выделенные пулы? какие-то опции виртуальной машины?
lpc>Да, делаем полный pre-allocation и все храним в большом массиве байтов (в реальности массив не один а много, и не только байтов а еще и шортов, интов, лонгов). Чем то похоже на программирование на С, но ООП тоже как ни странно присутствует. Небольшой тюнинг JVM тоже делается. Самое сложное что при таком подходе нельзя использовать никакие (стандартные) библиотеки, даже коллекции, поэтому нам пришлось написать все свое.
lpc>P.S.: для особых случаев можно получить прямой доступ к памяти через sun.misc.Unsafe и разогнаться еше больше.
Для тех кто в танке, можно объяснить на пальцах что же вы там все-таки набангалорили?
Я не понимаю. Как можно преаллокейтать все объекты когда их количество неизвестно до рантайма ровно также как и не известно какие "пути будут следоваться в коде." И всех этих объектов, мягко говоря, дохрена.
Или вы написали свой аллокатор? В таком случае чем он лучше сановского? И что происходит с объектами которые больше не нужны? Где берется память когда закончилась существующая?
Здравствуйте, SkyDance, Вы писали:
ОК>>А если несколько клиентов "вещают в сети?"
SD>К таким конфигурациям даже сами понятия latency (и тем более realtime, с обязательным жестким ограничением на время ответа) неприменимы в общепринятом смысле А главное, что это у вас такое, древний ethernet с коаксиальным кабелем?
Я образно без вдавания в какие-нибудь технологии. В конечном счете на сервера идет трафик от кучи клиентов.
J>Вот у тебя в сетке несколько фидов с разных бирж, все мультикастят — все равно нет latency?
А, я другую картину вообразил. Про мультикаст сразу и не вспомнил. Но это все равно другой случай, и для нормальной real-time все равно не покатит, ибо коллизии. Ну или по православному, через "все со всеми" каналы.
Здравствуйте, Олег К., Вы писали:
ОК>Успех торговли это еще не только возможность первым купить, но еще и сама стратегия. Только закладываются почему-то на первое.
Ха, вообще поразительная реакция аудитории: да вы ваще отключать то его умеете? Вот я то отключу, я д'Артаньян, а вы там в банке своем ...расы криворукие. Вот, то есть был профи, а как пришел в банк и на тебе — руки в зюзю скривились.
Здравствуйте, Kswapd, Вы писали:
SD>>Средняя длина МПХ, согласно опросам, составляет 25 см. SD>>Однако согласно измерениям средняя длина составляет 14 см.
K>В каком состоянии?
Здравствуйте, Олег К., Вы писали:
lpc>>Мы номер 1 в алготрейдинге практически по всем параметрам (согласно Thomson Reuters Extel Survey и ряду других). ОК>Смешно читать такое. Сейчас каждая шарашкина контора является номером один согласно какому-нибудь исследованию, опросу, журналу или сайту.
Прежде чем делать такие глупые заявления, советую разузнять что такое Extel Survey и как именно он проводится.
Здравствуйте, Олег К., Вы писали:
ОК>Копай глубже. Тут вопрос в другом. Насколько вообще это вменяемое требование? А то сделать-то можно но вот нужно ли?
Тебе не кажется что нашему бизнесу видней какое требование вменяемое, а какое нет? Спешу опередить твой следующий вопрос — наш бизнес знает что такое GC и что свет проходит 30 см за 1 наносекунду.
P.S.: Когда приходит market order и система залипает на пол-секунды из-за GC то за это время цена может значительно просесть и клиент нам предъявит убытки (а еще хуже если будет как с насдаком по время IPO фейсбука). Реально смешно читать про советы такие советы...
Здравствуйте, Олег К., Вы писали:
ОК>Для тех кто в танке, можно объяснить на пальцах что же вы там все-таки набангалорили?
Не стоит думать что все такие же бангалорцы как у вас на проекте. У нас все хорошо.
ОК>Я не понимаю. Как можно преаллокейтать все объекты когда их количество неизвестно до рантайма ровно также как и не известно какие "пути будут следоваться в коде." И всех этих объектов, мягко говоря, дохрена.
ОК>Или вы написали свой аллокатор? В таком случае чем он лучше сановского? И что происходит с объектами которые больше не нужны? Где берется память когда закончилась существующая?
Обычно курс молодого бойца занимает 2-3 месяца и я как то не вижу особого смысла рассказыват о всех деталях на открытом форуме, тем более людям с таким негативным настроем как у тебя.
P.S.: когда заканчивается память то делаем new (который не вызывает GC потому что у нас всегда есть запас в young generation).
Здравствуйте, Олег К., Вы писали:
ОК>А не нужны эти макросы и шаблоны в нормальном коде. (Эти слова не следует понимать что нужно отказаться от СТЛ — их следует понимать что не надо писать в стиле "меня Александреску в полнолуние укусил.")
Определи что такое 1) нормальный код и что такое 2) макросы и шаблоны в смысле СТЛ но не в смысле александерску. Потом поговорим.
Здравствуйте, trophim, Вы писали:
T>Ха, вообще поразительная реакция аудитории: да вы ваще отключать то его умеете? Вот я то отключу, я д'Артаньян, а вы там в банке своем ...расы криворукие. Вот, то есть был профи, а как пришел в банк и на тебе — руки в зюзю скривились.
Реакция аудитории, с сожалению, была весьма предсказуема... я хотел было поделиться интересным подходом использования джавы а нарвался на традиционное "такое невозможно, да вы дураки, вам вообще это не надо". Но с другой стороны это радует, конкурентов на рынке все еще мало, общество еще не созрело
Здравствуйте, lpc, Вы писали:
lpc>Здравствуйте, Олег К., Вы писали:
ОК>>Копай глубже. Тут вопрос в другом. Насколько вообще это вменяемое требование? А то сделать-то можно но вот нужно ли?
lpc>Тебе не кажется что нашему бизнесу видней какое требование вменяемое, а какое нет? Спешу опередить твой следующий вопрос — наш бизнес знает что такое GC и что свет проходит 30 см за 1 наносекунду.
lpc>P.S.: Когда приходит market order и система залипает на пол-секунды из-за GC то за это время цена может значительно просесть и клиент нам предъявит убытки (а еще хуже если будет как с насдаком по время IPO фейсбука). Реально смешно читать про советы такие советы...
Интересно таки, почему стоит оставлять от Явы одно название, но пользоваться ею.
Если маркет не 24-часовой, то в окнах можно чистить память/перезапускать процесс.
Следующий интересный вопрос — размер working set. Minor GC с || коллектором занимают > 0.1 секунды на несколько гигабайтных объёмах (причем тут есть шансы пошаманить, использовать G1 или машину от Azul).
Если же память вручную аллокировать, то возвращаемся к вопросу о фрагментации, компактированию и прочим около сборочно-мусорным вещам... Тут можно предположить, что памяти до фига и вы дотягиваете до окна в торгах. Только с дофига памяти можно и не городить такой огород...
lpc>>>Мы номер 1 в алготрейдинге практически по всем параметрам (согласно Thomson Reuters Extel Survey и ряду других). ОК>>Смешно читать такое. Сейчас каждая шарашкина контора является номером один согласно какому-нибудь исследованию, опросу, журналу или сайту.
lpc>Прежде чем делать такие глупые заявления, советую разузнять что такое Extel Survey и как именно он проводится.
Да мне и читать ничего не надо. Я тебе и так все скажу. Там везде свои люди. Большой дядя звонит своему дружбану и говорит что хочет такую-то статью. Дальше дело денег.
ОК>>Копай глубже. Тут вопрос в другом. Насколько вообще это вменяемое требование? А то сделать-то можно но вот нужно ли?
lpc>Тебе не кажется что нашему бизнесу видней какое требование вменяемое, а какое нет? Спешу опередить твой следующий вопрос — наш бизнес знает что такое GC и что свет проходит 30 см за 1 наносекунду.
Мне все равно что там у вас и я очень хорошо знаю какие идиоты могут встречаться во всех этих компаниях. На всех ступеньках карьерной лестницы. "Чем бы дитя не тешилось лишь бы не плакало," в общем.
С опережением ты поспешил. Я это и не собирался спрашивать. Спрошу другое. Допустим вы выжали целую секунду с вашим решением. Теперь следуя этой логике имеет смысл оптимизировать драйвера и/или планировщик Линукса (Линукс чисто как пример). Вы не собираетесь там этим в ближайшее время заняться?
lpc>P.S.: Когда приходит market order и система залипает на пол-секунды из-за GC то за это время цена может значительно просесть и клиент нам предъявит убытки (а еще хуже если будет как с насдаком по время IPO фейсбука). Реально смешно читать про советы такие советы...
ОК>>Для тех кто в танке, можно объяснить на пальцах что же вы там все-таки набангалорили?
lpc>Не стоит думать что все такие же бангалорцы как у вас на проекте. У нас все хорошо.
Тут уже несколько человек раскритиковали ваше решение. Так уж и хорошо?
ОК>>Я не понимаю. Как можно преаллокейтать все объекты когда их количество неизвестно до рантайма ровно также как и не известно какие "пути будут следоваться в коде." И всех этих объектов, мягко говоря, дохрена.
ОК>>Или вы написали свой аллокатор? В таком случае чем он лучше сановского? И что происходит с объектами которые больше не нужны? Где берется память когда закончилась существующая?
lpc>Обычно курс молодого бойца занимает 2-3 месяца и я как то не вижу особого смысла рассказыват о всех деталях на открытом форуме, тем более людям с таким негативным настроем как у тебя.
Да нормальный у меня настрой и у других тоже нормальный. Ты лучше уж поделись деталями (раз сам затронул тему что вы там сделали) сколько человек это пилило, обсуждало и неужели там не было никого кто бы воспротивился этому решению?
lpc>P.S.: когда заканчивается память то делаем new (который не вызывает GC потому что у нас всегда есть запас в young generation).
У вас память что ли бесконечна?
Давай уж, не говори про курс молодого бойца и два-три месяца. Расскажи на пальцах в течении пяти минут подробнее. А то у меня до сих пор непонимание как можно преаллокейтить все объекты когда ты не знаешь даже в рантайме сколько их у тебя еще будет да и каких типов.
ОК>>А не нужны эти макросы и шаблоны в нормальном коде. (Эти слова не следует понимать что нужно отказаться от СТЛ — их следует понимать что не надо писать в стиле "меня Александреску в полнолуние укусил.")
lpc>Определи что такое 1) нормальный код и что такое 2) макросы и шаблоны в смысле СТЛ но не в смысле александерску. Потом поговорим.
Ну начинается. Простой, лаконичный код который можно понять сходу и/или пройтись отладчиком если надо. Так чтобы плеваться не приходилось. На счет 2). Вместо #define MY_CONST 7 пишешь const int MyConst = 7; или енумы, вместо #define SQUARE(x) ((x) * (x)) пишешь соответсвенно инлайн функцию, на счет темплейтов — пользуешься стандартными контейнерами и смарт пойнтерами и очень редко когда сам пишешь темплейтные функции и классы. Большего и не нужно.
Здравствуйте, Олег К., Вы писали:
ОК>У вас память что ли бесконечна?
Кстати, это вариант. Тогда аллокатор будет реально быстрым
ОК>Давай уж, не говори про курс молодого бойца и два-три месяца. Расскажи на пальцах в течении пяти минут подробнее. А то у меня до сих пор непонимание как можно преаллокейтить все объекты когда ты не знаешь даже в рантайме сколько их у тебя еще будет да и каких типов.
Чую, что все 'объекты' у них — это одноуровневые структуры с методами, сильно напоминающими ByteBuffer: getInt(offset), getByte(offset) и т.д.
Но вот как они их вычищают???