vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2024-11-26 04:03 pm

Бенчмарки для сравнения языков программирования

github.com/bddicken/languages

На настоящий момент сравниваются языки Kotlin, C, Go, Rust, Node, Bun, Deno, PyPy, Java, Ruby, PHP, R, Python, Dart. Жаль нету Swift и Perl.

Два теста:
  • loops
  • fibonacci
Предлагается добавлять новые тесты и языки.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2024-11-27 03:20 am (UTC)(link)
С jvm неудивительно. Как-то ставили опыт, игру "жизнь" гоняли на нейтив скале и на джейвиэмной. Сначала джейвиэмная тормозила, но потом как ломанулась, и уделала сильно.
archaicos: Шарж (Default)

[personal profile] archaicos 2024-11-27 05:17 am (UTC)(link)
Там в ржавчине включена проверка переполнений? Может, её отключить надо?
ircicq: (Default)

[personal profile] ircicq 2024-11-27 01:57 am (UTC)(link)
Fibonacci на Си почему-то написан через рекурсию, хотя проще и быстрее циклом.
ircicq: (Default)

[personal profile] ircicq 2024-11-27 02:05 am (UTC)(link)
Лучше бы выбрали Функцию, не реализуемую кроме как рекурсией,
например https://en.wikipedia.org/wiki/Ackermann_function
Edited 2024-11-27 02:05 (UTC)
juan_gandhi: (Default)

[personal profile] juan_gandhi 2024-12-01 09:36 pm (UTC)(link)
Можно же добавить тест-кейс, и послать им пулреквест.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2024-11-27 03:21 am (UTC)(link)
Фибоначчи проще через формулу.

[personal profile] sassa_nf 2024-11-27 10:00 pm (UTC)(link)
OpenJDK 11
Benchmark           (size)  Mode  Cnt       Score      Error  Units
Fibo.FiboRecursive      40  avgt   25  922753.617 ± 2747.036  us/op

0.9s, basically.


OpenJDK 17
Benchmark           (size)  Mode  Cnt        Score      Error  Units
Fibo.FiboRecursive      40  avgt   25  1032010.482 ± 8309.430  us/op

1s, basically.


OracleJDK 23
Benchmark           (size)  Mode  Cnt        Score      Error  Units
Fibo.FiboRecursive      40  avgt   25  1082715.628 ± 6358.441  us/op


I would expect your numbers to be dominated by JVM startup. Are you on SSD?

At the same time, fibonacci using GCC is 0.38s, and using clang is 0.56s, so it's not just a slow computer.
Edited 2024-11-27 22:02 (UTC)

[personal profile] sassa_nf 2024-11-28 09:50 am (UTC)(link)
Actually, no, the effect is coming from other parameters of the system, not startup specifically.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2024-11-27 03:19 am (UTC)(link)
О блин, надо ж ещё инсталлер сделать. brew install rust; brew install kotlin; brew install go; brew install dart etc.
Посмотрим.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2024-12-01 09:37 pm (UTC)(link)
Послал им, setup.sh.
x86128: (Default)

[personal profile] x86128 2024-11-27 03:36 am (UTC)(link)
по сутi сравнивают компиляторы на предмет глубины оптимизаций

[personal profile] sassa_nf 2024-11-28 09:53 am (UTC)(link)
Та по суті нічого такого вони не порівнюють. Для джави є jmh, і всі мікробенчмарки треба робити через нього, щоб не робити базових помилок, типу як прогріти, як виключити GC, і т.п.

[personal profile] sassa_nf 2024-11-27 06:41 am (UTC)(link)
Java requires a warm-up.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2024-12-01 09:35 pm (UTC)(link)
Классная вещь. Свифт уже добавили. Я тоже пулреквест послал; вот моя версия, со скалой-3.