Kokeilin c++ :n chrono-kirjastoa ja huomasin, että Fibonaccin lukujen laskeminen kestää yllättävän kauan.
Esimerkissä noin 0,6 sekuntia, mutta omalla koneellani jopa yli 2 sekuntia. Ohjelmaa on helppo kokeilla. Lähdekoodi on tässä
#include <iostream>
#include <chrono>
#include <ctime>
long fibonacci(unsigned n)
{
if (n < 2) return n;
return fibonacci(n-1) + fibonacci(n-2);
}
int main()
{
std::chrono::time_point<std::chrono::system_clock> start, end;
start = std::chrono::system_clock::now();
std::cout << "f(42) = " << fibonacci(42) << '\n';
end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start;
std::time_t end_time = std::chrono::system_clock::to_time_t(end);
std::cout << "finished computation at " << std::ctime(&end_time)
<< "elapsed time: " << elapsed_seconds.count() << "s\n";
}
Käänsin sen komennolla
g++ koe03.cpp -o koe03 -std=c++0x -Wall -pedantic
Olisi mielenkiintoista tietää, kauanko ohjelman suoritus toisilla koneilla kestää ja olsiko jollain käännöskomennon parametreilla vaikutusta asiaan (mitä en kyllä uskoisi).
Oma koneeni on vanha i5 -laite.