函数或 if 语句的C++ "searches"如何?
How C++ "searches" for functions or else if statements?
假设我在C++程序中有 200 个函数。每次调用一个,程序如何找到函数?这是线性搜索吗?二叉搜索?
如果 a 有一个包含 200 个else if
的 if
/else if
/.../else
语句,程序会逐个搜索它们吗?如果是这样,我该如何提高这里的性能?
在编译的二进制文件中,函数调用只是带有地址的指令call
,即函数所在的位置。所以程序不需要找到函数。它只是已经知道函数的地址并跳转到它。
对于else if
语句,程序只测试每个条件。正如您在评论中建议的那样,在某些情况下,switch可能是一种优化,但建议(由我)不要依赖它。仅当它使您的代码更清晰时才使用它。
if-else if-else 条件逐个计算,直到条件匹配。您也许能够优化特定的用例,但在一般形式中,您必须逐个检查它们。
相关文章:
- 如何循环打印顶点结构
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 如何将stdout重定向到stderr
- Mongodb c++驱动程序:如何查询元素的数组
- 当回溯以零开始时,如何调试崩溃
- 如何反转整数参数包
- 如何使用Google Mock来模拟gettimeofday()
- 如何使用默认参数等选择模板专业化
- 如何从C++中的依赖类型中获得它所依赖的类型
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 如何确定我已使用非编码文件到达 EOF?
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何使用ndk-build.cmd构建Android.so文件
- std::condition_variable::wait()如何评估给定的谓词
- 如何获取std::result_of函数的返回类型
- 循环后如何继续阅读
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 函数或 if 语句的C++ "searches"如何?