Derleme zamanında değerlendirilen const ifadelerini deniyorum. Ancak derleme zamanında yürütüldüğünde inanılmaz hızlı görünen bir örnekle oynadım.
#include<iostream>
constexpr long int fib(int n) {
return (n <= 1)? n : fib(n-1) + fib(n-2);
}
int main () {
long int res = fib(45);
std::cout << res;
return 0;
}
Bu kodu çalıştırdığımda çalıştırmak yaklaşık 7 saniye sürer. Çok uzak çok iyi. Değişmek Ama long int res = fib(45)
için const long int res = fib(45)
bunun bile bir saniye değil sürer. Anladığım kadarıyla derleme zamanında değerlendirilir.
Ama derleme yaklaşık 0.3 saniye sürüyor
Derleyici bunu nasıl bu kadar hızlı değerlendirebilir, ancak çalışma zamanında çok daha fazla zaman alır? Gcc 5.4.0 kullanıyorum.
fib
. Yukarıda bulunan fibonacci sayılarının uygulanması yavaştır. Çalışma zamanı kodundaki işlev değerlerini önbelleğe almayı deneyin; çok daha hızlı olur.