native? Не нагуглил
Бенчмарки чего?
В духе этих: https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html
Почему-то я не сомневался. <lection> Бенчмаркинг - это очень нетривиальная и плохо формализуемая штука. Собственно интерпретировать бенчмарки напрямую нельзя, потому что они зависят не только от того, что за задача решается и как она решается. Еще более скользкая тема, это микро-бенчмарки, которые тестируют какой-то мелкий узко заточенный алгоритм, потому что тут очень сильно все зависит от оптимизации под конкретный язык. Конкретно benchmark game создавался для динамических интерпретируемых языков и примерно только для них он и годится, делать какие-то выводы по нему нельзя. Не говоря о том, что там у авторов сильный уклон в сторону С++ всегда был (сравнивали хорошо опитмизированный С++ код с неоптимизированным на остальных компиляторах). По сему, не возможно смотреть производительность "вообще" в отрыве от задачи, которая решается. </lection> Теперь по K-N. Там унутре используется LLVM, тот же самый, что в С++, Rust, Swift, etc. Так что пиковая производительность такая же. Но конкретные компиляторные оптимизации под котлин не всегда и везде вылизаны, так что могут быть эксцессы. Сейчас его очень сильно улучшили в этом смысле, но все равно нельзя анализировать в отрыве от задачи. Если сравнивать с JVM, то JVM скорее всего будет быстрее (хоть и требовательнее по памяти.
Для меня язык (синтаксис) в программировании первичен. Долгое время считал наиболее идеальным C#. Однако после знакомства с Kotlin изменил свое мнение, так как Kotlin продуманее (C# тащит новые фичи в синтаксис, в ядро языка, а Kotlin легко кастомизируется в свой DSL благодаря сочетанию расширений и функций области видимости). Одна беда -- во всех бенчмарках JVM уступает .NET Core/.NET 5, за счет поддержки в дотнете более гибкого управления памятью, и это меня печалит. Поэтому подумал, может этот недостаток компенсируется Kotlin Native
Проблема в том, что эти вот "все бенчмарки" - это очень относительное понятие. Вероятно эти вот "все" писали люди с .Net. JVM не уступает C# в среднем. Скорее даже наоборот. Но это очень сильно зависит от конкретной задачи. В каких-то отдельных микро-тестах может быстрее, в каких-то медленее. Но в целом одинаково. В любом случае, разница в 20% вообще погрешность эксперимента. Натив не дает ничего в плане производительности на реальных проектах, наоборот даже. И это касается не только Kotlin-native.
У .NET есть пользовательские значимые типы которые хранятся на стеке. У JVM нет
Есть скаляризация, которая работает автоматически и в среднему будет умнее, чем пользователь.
могу за день написать ровно 10 бенчмарков, где джава победит, и 10, где шарп
основная проблема, за которую jvm нужно ненавидеть - боксинг
Предлагаю написать один где по вашему предположению победит java. А я в силу своих скромных способностей попытаюсь сделать на .net быстрее. Скуки ради)
Обсуждают сегодня