#include <iostream> #include <chrono> void ifElseFunction(int value) { if (value == 1) { std::cout << "值是 1" << std::endl; } elseif (value == 2) { std::cout << "值是 2" << std::endl; } elseif (value == 3) { std::cout << "值是 3" << std::endl; } elseif (value == 4) { std::cout << "值是 4" << std::endl; } elseif (value == 5) { std::cout << "值是 5" << std::endl; } elseif (value == 6) { std::cout << "值是 6" << std::endl; } elseif (value == 7) { std::cout << "值是 7" << std::endl; } elseif (value == 8) { std::cout << "值是 8" << std::endl; } elseif (value == 9) { std::cout << "值是 9" << std::endl; } elseif (value == 10) { std::cout << "值是 10" << std::endl; } else { std::cout << "值超出范围" << std::endl; } } int main() { auto start = std::chrono::high_resolution_clock::now(); for (int i = 1; i <= 1000000; ++i) { ifElseFunction(i % 10 + 1); } auto end = std::chrono::high_resolution_clock::now(); std::chrono::duration<double> diff = end - start; std::cout << "if-else 用时: " << diff.count() << " 秒" << std::endl; return0; }switch-case 版本:聪明人偷懒
#include <iostream> #include <chrono> void switchCaseFunction(int value) { switch (value) { case1: std::cout << "值是 1" << std::endl; break; case2: std::cout << "值是 2" << std::endl; break; case3: std::cout << "值是 3" << std::endl; break; case4: std::cout << "值是 4" << std::endl; break; case5: std::cout << "值是 5" << std::endl; break; case6: std::cout << "值是 6" << std::endl; break; case7: std::cout << "值是 7" << std::endl; break; case8: std::cout << "值是 8" << std::endl; break; case9: std::cout << "值是 9" << std::endl; break; case10: std::cout << "值是 10" << std::endl; break; default: std::cout << "值超出范围" << std::endl; break; } } int main() { // 堆代码 duidaima.com auto start = std::chrono::high_resolution_clock::now(); for (int i = 1; i <= 1000000; ++i) { switchCaseFunction(i % 10 + 1); } auto end = std::chrono::high_resolution_clock::now(); std::chrono::duration<double> diff = end - start; std::cout << "switch-case 用时: " << diff.count() << " 秒" << std::endl; return0; }跑一遍,结果咋样?
if-else:0.45 秒 switch-case:0.32 秒看到没?switch-case硬生生比 if-else快了 30% 左右!这可不是小数目,尤其在高频调用场景下,差距会更夸张。
3.这时候它的跳转表优化能发挥最大威力。