elizarov


Блог Романа Елизарова


Previous Entry Share Next Entry
Краткий отчет: Миллионы котировок в секунду на чистой Java
elizarov

Появились слайды с моего доклада Миллионы котировок в секунду на чистой Java. Встреча получилась долгой. Было много интересных вопросов. Большое спасибо всем, кто их задавал. Многое я рассказывал не со слайдов. Основные акценты, конечно, все есть на слайдах, но пояснения к ним я давал голосом.

UPDATE: На сайте Лекториум появилось и видео.

Слайды доступны по ссылке: Millions quotes per second in pure java.


Посмотреть видео на сайте Лекториума


  • 1
Вот если бы ее еще сохранить можно было..

Слайды-то на англиском,и это в Питере доклад. Прощай, немытая Роиссия.

Вау, суперпознавательно. А поводу JVM не понял: используется стандартная Оракловая или 3dparty?

Хм. "Как на Яве писать на С++"

Если мне нужно писать на С++, то я пишу на нем! Другое дело, что есть масса задач, для решения которых Java подходит лучше и решаемые нами задачи по работе с рыночными данными из их числа. Благодаря Java мы успешно конкурируем с решениями на C++ при том, что мы вышли на этот рынок относительно недавно.

тема оптимизаций и технологий она вообще бесконечна :). если есть возможность писать на выскоуровневом языке несущественно теряя в скорости - надо это делать.

io ориентированная задача - одна из немогих (в смысле достижения макс пропускной способности), которые можно решить на jvm не уперевшись в ограничения языка. кабы в ява были explicit stack allocations (aka c# struct) можно было бы еще элегантнее, но суть не меняется. контр пример - мат расчеты где у явы плохо все (начиная с отсутствия квадратных массивов)

программисты на с++, считающие что это язык ориентированный на ultimate performance, как правило просто не сталкивались с задачами в которых надо уметь давать ответы на вопросы про vmt lookups & how many times you're crossing the bus (welcome to c99 & fpga).

Я извиняюсь, если этот вопрос был озвучен раннее, пока не успел все посмотреть. Наверное ни для кого не секрет, что в Java "числа с плавающей точкой" хранятся в приближенном значении. Простой пример:
double d = 1.0;
for (int i = 0; i < 10; i++) {
d -= 0.1;
}
System.out.println(d);
не выдаст ожидаемого нуля, и беда в том, что на этот результат может быть заложено условие проверки на равенство с нулем и т.п. Можно, конечно, для этих целей использовать BigDecimal, но тогда упадет производительность, либо long и тогда программистов ожидают мучения, либо округлять каждый раз, что тоже неудобно. В чем, собственно, вопрос: какие типы данных используются для точных вычислений значений чисел с плавающей точкой в этой системе, которая способна обработать миллионы котировок в секунду?

Re: Округление

Для вычислений, конечно же, используется double. Однако, как вы правильно заметили, double хранит приближенные значения, поэтому для получения в double правильных результатов надо четко понимать принцип работы double, понимать откуда берутся ошибки вычисления и как с ними бороться. Это, в принципе, хорошая самостоятельная тема на которую можно легко сделать отдельную многочасовую лекцию.

А вот для передачи данных мы double не используем. Для экономии памяти мы упаковываем десятичные числа в переменные типа int в своем собственном формате.

о да... я тут пытался объяснить "кванту" почему при расчете интерест рэйтс из спота и короткого (1D 3D)FX фьючерса при заданном рейте в районе нуля (USD) мы запросто можем получить бред собачий и никакого парити не будет... ответ взорвал мой мозг -- "ну так мы же в decimal считаем откуда потеря точности"... а формула-то умножить-вычесть-поделить... а это никак не "серьезные" вычисления.. просто на результат очень сильно влияет точность входных данных...
в продолжение темы через несколько дней он мне написал, что мол твои рэйтс ок - центральный банк опубликовал отрицательные рэйты... это был второй разрыв мозга. я в ответ смог написать только "ок"

Какая из этого мораль?

Добрый день, Роман.

Я слышал Ваш доклад на JavaOne Moscow. Там Вы упомянули про разработанную вашей компанией open source инструмент для определения allocation rate и горячих мест. Можно спросить ссылку на него?

Re: Allocation rate

Cмотрите здесь: http://code.devexperts.com/display/AProf/About+Aprof
Так же я упоминал и рассказывал о нем на докладе DIY Java Profiling на конференции ADD CONF в 2011 году.

Добрый день, Роман.
Послушал вас на JavaOne. Потом нашёл ваш доклад на jug.ru там вы говорите про некий ключик ИКСАПРУВ (на слух, про кол-во удаляемых GC объектов), а на слайде ключика нет. Не могли бы Вы написать этот ключ

Не могу расшифровать ваш вопрос... На какой минуте я об этом говорю?

потрясающе!!! вы популярно рассказали о моей работе :)
буду показывать всем знакомым.

Здравствуйте Роман

Поздравляю с олимпийским Новым Годом!
Можно вопрос на засыпку для олимпиады:
За какое кратчайшее время можно параллельно определить простоту числа N, если запас процессоров неограничен и их разрядность тоже неограничена. 

  • 1
?

Log in

No account? Create an account