В Rust by Example #36 сумма нечетных целых чисел до предела рассчитывается как в императивном стиле, так и в функциональном стиле.Накладные расходы в программировании функционального стиля
Я отделил эти два из и увеличил верхний предел 10000000000000000 и приурочены результаты:
императив стиль:
me.home:rust_by_example>time ./36_higher_order_functions_a
Find the sum of all the squared odd numbers under 10000000000000000
imperative style: 333960700851149440
real 0m2.396s
user 0m2.387s
sys 0m0.009s
Функциональный стиль:
me.home:rust_by_example>time ./36_higher_order_functions_b
Find the sum of all the squared odd numbers under 10000000000000000
functional style: 333960700851149440
real 0m5.192s
user 0m5.188s
sys 0m0.003s
функциональная версия работает медленнее а также требуется немного больше времени для компиляции.
Вопрос в том, что заставляет функциональную версию работать медленнее? Является ли это неотъемлемым элементом функционального стиля или связано с тем, что компилятор не оптимизирован так хорошо, как мог?
Вы должны скомпилировать с оптимизацией (rustc -O ...) – Arjan
Конечно. Теперь функциональный стиль немного быстрее. – user2664470