আমি দৃ const় মত প্রকাশের চেষ্টা করছি যা সংকলন সময়ে মূল্যায়ন করা হয়। তবে আমি এমন একটি উদাহরণ দিয়ে খেলেছি যা সংকলনের সময় কার্যকর করার সময় অবিশ্বাস্যরকম দ্রুত বলে মনে হয়।
#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;
}
আমি এই কোডটি চালানোর সময় এটি চালাতে প্রায় 7 সেকেন্ড সময় লাগে। এ পর্যন্ত সব ঠিকই. কিন্তু আমি যখন পরিবর্তন long int res = fib(45)
করার জন্য const long int res = fib(45)
এটা এমনকি একটি দ্বিতীয় না লাগে। আমার বোঝার জন্য এটি সংকলন সময়ে মূল্যায়ন করা হয়।
তবে সংকলনটি প্রায় ০.০ সেকেন্ড সময় নেয়
সংকলকটি কীভাবে এটি এত তাড়াতাড়ি মূল্যায়ন করতে পারে তবে রানটাইমে এটি এত বেশি সময় নেয়? আমি জিসিসি 5.4.0 ব্যবহার করছি।
fib
। আপনার উপরের ফিবোনাচি সংখ্যাগুলি বাস্তবায়ন হ'ল পিরিয়টি ধীর। রানটাইম কোডে ফাংশনের মানগুলি ক্যাশে করার চেষ্টা করুন এবং এটি আরও দ্রুত হবে।