Давно я к этому своему синтесту работы с объектами не обращался. Но вчера, после годичного забвения, обновлял данные по PHP7 (очень интересен был его рывок) и в голову пришла мысль измерить Rust. Заодно, решил посмотреть, что за язык получился :) На знакомство с языком и написание теста ушло 15 минут, так что, возможно, его качество далеко от идеала. Потому тему и завёл, может, где-то грубо ляпнул. Я даже не знаю до сих пор, как дело в Rust со сборкой мусора обстоит и он эквивалент по этой классификации Java/C-хипового или C-стекового.
Важно! Это не программа для вычисления чисел Фибоначчи, это тест для скорости создания объектов, обращений к свойствам и вызовов методов. Поэтому не нужно делать «алгоритмическую оптимизацию», типа вынесения локальных переменных, отказа от объектов вообще или введения хвостовой рекурсии — просто тогда сразу по формуле Бине посчитать :D
Вот мой первый вариант: https://github.com/Balancer/benchmarks-fib-obj/blob/f6474cbbca83b8ae376c27d5e...
Получилось 0.603 сек., что почти вдвое хуже стекового Си (0.350) и немного лучше Java (0.685) со сборкой мусора.
Результат после оптимизации в топике — 0.329 и у Rust первое место.
Обновлённая таблица: https://github.com/Balancer/benchmarks-fib-obj/wiki/Результат-теста:-i3-2.2ГГц