<分区>
我这里有以下 C++ 代码:
#include <iostream>
int main(int argc, const char * argv[])
{
goto line2;
line1:
std::cout << "line 1";
goto line3;
line2:
std::cout << "line 2";
goto line1;
line3:
std::cout << "line 3";
goto line4;
line4:
std::cout << "Hello, World!\n";
return 0;
}
如果我制作了一个更大的程序,假设有 10,000 行代码,并且我决定永远不会使用我自己编写的函数,我只使用 goto
语句。我只使用全局变量。我在最佳实践方面有点疯狂,但它是为了一个非常具体的目的。问题是,使用 goto
语句跳转是否有效?如果我有 1000 个 goto
标签怎么办?
goto
语句是否直接转换为告诉计算机跳转到不同内存地址的机器代码?与调用函数的成本相比,机器这样跳来跳去的成本是否更低?
我想知道,因为我想编写一个非常高效的程序来进行一些计算,我需要在不借助汇编/机器代码的情况下非常高效。
无需告诉我这在维护、代码的可理解性、最佳实践方面是个坏主意,我非常清楚这一点,我只是希望得到问题的答案。我不想争论使用函数调用好还是使用 goto
好。
为了澄清这个问题,我关心的是在这种情况下,仅在 10,000 行程序中使用 goto
与使用函数的传统程序相比如何。有多种方法可以比较和对比这两个程序,例如 CPU 缓存的性能如何。如果没有函数调用,它会提供什么样的节省。如果没有调用堆栈,这将如何影响 CPU 缓存,因为 CPU 缓存通常保持堆栈关闭。因此是否会出现由于未正确使用缓存而可能对性能造成负面影响的情况。与时间效率方面的跳跃相比,调用函数的实际成本是多少。有很多方法可以在效率方面比较和对比这两种编程风格。