Почему рекурсивная функция contexPR намного быстрее с эталонными параметрами, чем со значениями?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему рекурсивная функция contexPR намного быстрее с эталонными параметрами, чем со значениями?

Сообщение Anonymous »

У меня есть следующая функция contexpr fibonacci:

Код: Выделить всё

constexpr auto fibo(unsigned int number) -> unsigned long long {
if (number < 2) return number;
return fibo(number - 1) + fibo(number - 2);
}
< /code>
Если я сравниваю его с кодом ниже, я получаю следующий вывод: < /p>
benchmark name                       samples       iterations    est run time
mean          low mean      high mean
std dev       low std dev   high std dev
-------------------------------------------------------------------------------
Benchmark fibo(46)                             100             1        2.66 m
1.60356 s     1.60231 s     1.60477 s
6.30399 ms    5.51902 ms    7.32077 ms
Когда я изменяю номер на Unsigned int const & number , скорость значительно улучшается:

Код: Выделить всё

benchmark name                       samples       iterations    est run time
mean          low mean      high mean
std dev       low std dev   high std dev
-------------------------------------------------------------------------------
Benchmark fibo(46)                             100             1    17.7672 ms
177.013 us    176.272 us      177.9 us
4.13731 us    3.56318 us    4.80496 us
< /code>
Почему при передаче параметра на справочнике такое гигантское увеличение скорости?#include "Fibonacci.hpp"
#include "catch2/catch_message.hpp"

#include 
#include 
#include 
#include 
#include 
#include 
#include 

TEST_CASE("Fibonacci calculation", "[Fibonacci Benchmark Suite]") {
auto entry = GENERATE(table({
{0, 0},
{1, 1},
{2, 1},
{3, 2},
{4, 3},
{5, 5},
{46, 1836311903} // Runs long!
}));
auto input = std::get(entry);
auto expected = std::get(entry);
std::ostringstream oss;
oss 

Подробнее здесь: [url]https://stackoverflow.com/questions/79583153/why-is-a-recursive-constexpr-function-so-much-faster-with-reference-parameters-t[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»