Size: a a a

Kotlin Community

2020 May 15

VP

Vladimir Petrakovich in Kotlin Community
Quantum Harmonizer
Почему не JVM + Epsilon GC? :)
Потому что JIT тоже умеет подкидывать проблем с деоптимизацией
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Roman Elizarov
Всё зависит от того нужна ли вам предсказуемость исполнения кода и продуктивность программистов или максимально быстрая скорость. Если предсказуемость, то но можно и JVM настроить чтобы GC пауз не было, и K/N можно использовать. Если же вот прямо нужно быстрей всех и готовы на любые жертвы, то пишите на системных языках типа C++.
да, вот второе.
У меня была такая идея, что где прям вот нужно быстрее всего - там понятно что только  C/С++/Rust, но насколько я понял у котлин нейтив будет нативные байдинги для подобных библиотек и можно просто делать вызов в подобную библиотеку где бородатые сишники выжали весь сок из процессора
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Alexander Nozik
А это реально ускоряет?
ну вот опыт аерона подсказывает что есть профит
источник

AN

Alexander Nozik in Kotlin Community
Ivan Zemlyankiy
ну вот опыт аерона подсказывает что есть профит
Понятно. А у вас прям водном месте ботлнек? Нельзя JNI обвязаться прям поверх супер-оптимизированного куска?
источник

RE

Roman Elizarov in Kotlin Community
Quantum Harmonizer
2020 год на дворе, давно есть Rust, ну какой может быть С++?
Смотря что именно вам нужно. На чисто вычислительных задачах и структурах данных все-таки C++ пока еще часто опережает Rust и если ради лишней наносекунды вперед конкурентов вы готовы на любые жертвы, то вам придется страдать писать на C++.
источник

NV

Nikita Vilunov in Kotlin Community
Alexander Nozik
Понятно. А у вас прям водном месте ботлнек? Нельзя JNI обвязаться прям поверх супер-оптимизированного куска?
JNI над супер-оптимизированным куском может быть медленнее чем этот же кусок на джаве
источник

NV

Nikita Vilunov in Kotlin Community
Roman Elizarov
Смотря что именно вам нужно. На чисто вычислительных задачах и структурах данных все-таки C++ пока еще часто опережает Rust и если ради лишней наносекунды вперед конкурентов вы готовы на любые жертвы, то вам придется страдать писать на C++.
Очень сомнительное высказывание
источник

IZ

Ivan Zemlyankiy in Kotlin Community
там как-раз есть 2 версии приложения, одна зеро-гц на джаве, вторая на Си. И да до поры до времени производительность была одинаковая, но Си открывает некоторые бекдоры которые дают буст к производительности процентов на 20
источник

AN

Alexander Nozik in Kotlin Community
Nikita Vilunov
JNI над супер-оптимизированным куском может быть медленнее чем этот же кусок на джаве
это понятно. Разумеется запускать JNI на каждый вызов бессмысленно
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Alexander Nozik
Понятно. А у вас прям водном месте ботлнек? Нельзя JNI обвязаться прям поверх супер-оптимизированного куска?
ну как, если это, скажем "отправка сообщения" то конечно jni будет ботлнеком. Или даже если не он, то он точно будет скрадывать перфоманс
источник

AN

Alexander Nozik in Kotlin Community
Ivan Zemlyankiy
ну как, если это, скажем "отправка сообщения" то конечно jni будет ботлнеком. Или даже если не он, то он точно будет скрадывать перфоманс
Если он не ботлнек, то 20% в нем роли играть не будут.
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Alexander Nozik
Если он не ботлнек, то 20% в нем роли играть не будут.
ну если речь про 3-4 микросекунды, то -20% уже играют, иначе зачем тогда всё остальное
источник

QH

Quantum Harmonizer in Kotlin Community
А правда ли вообще, что JNI медленный? Или время прямо пропорционально количеству перекидываемых данных?
В андроиде вон вся графика через JNI и аннотаций @FastNative насыпали.
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Quantum Harmonizer
А правда ли вообще, что JNI медленный? Или время прямо пропорционально количеству перекидываемых данных?
В андроиде вон вся графика через JNI и аннотаций @FastNative насыпали.
в андроиде лейтенси в миллисекундах исчисляется
источник

AN

Alexander Nozik in Kotlin Community
Ivan Zemlyankiy
ну если речь про 3-4 микросекунды, то -20% уже играют, иначе зачем тогда всё остальное
Я имею в виду, что если у вас есть явный ботлнек и в нем 80% времени, то изменение остальных 20% на 20% это всего 4%
источник

RE

Roman Elizarov in Kotlin Community
А если вам просто быстро нужно, то надо просто писать то, на чем комфортней. Вон мои старые коллеги запилили высокопроизводительный (быстрый и с малыми задержками) движок для биржи на JVM. Отлично получилось. В 100 мкс укладывается.
источник

NV

Nikita Vilunov in Kotlin Community
Quantum Harmonizer
А правда ли вообще, что JNI медленный? Или время прямо пропорционально количеству перекидываемых данных?
В андроиде вон вся графика через JNI и аннотаций @FastNative насыпали.
источник

RE

Roman Elizarov in Kotlin Community
Вот я когда-то докладик делал: https://jug.ru/talks/meetups/pure-java-highload/
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Roman Elizarov
А если вам просто быстро нужно, то надо просто писать то, на чем комфортней. Вон мои старые коллеги запилили высокопроизводительный (быстрый и с малыми задержками) движок для биржи на JVM. Отлично получилось. В 100 мкс укладывается.
это правда, мы так и делаем и у нас тоже система укладывается в slo на 100 микро, спасибо аерону за быструю пересылку данных. Проблема что есть некоторые места где хочется ещё больше выиграть, но там нужно лезть во внутренности ядра линукса и т.п., а это уже сложно делать на джаве, потому и задумался про котлин нейтив
источник

IZ

Ivan Zemlyankiy in Kotlin Community
дааа, я в своём докладе даже на него ссылаюсь )
источник