闽公网安备 35020302035485号
#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.这时候它的跳转表优化能发挥最大威力。