![]() |
1
2
对于大多数平台,您可以假设条件更快。这是因为大多数分支预测失误代价高昂的现代体系结构都具有某种形式的条件移动指令,编译器将利用这些指令执行请求的检查和分配。例如,我的GCC将其翻译为:
对于x86_64(和x86)而言:
(从Pentiumpro开始提供CMove。) 这是手臂拇指:
所有 武器有条件执行。 等等。总结一下:你需要一个架构
以模戏法作为最快的结束。**如果有这样的建筑,请告诉我。我总是对这些事感兴趣。 |
![]() |
2
2
除非您需要程序是可交叉编译的,否则您可以将基准测试作为构建过程的一部分。根据结果,您可以选择特定的实现并继续编译应用程序。 |
![]() |
3
1
循环运行一百万次? |
![]() |
4
1
你需要做基准测试。 由于分支预测失误,条件值可能很昂贵。 另一方面,在许多处理器上,除法比简单的比较更昂贵。 它可以根据运行的平台、运行的循环类型、上限有多大、编译器正在执行的优化等进行任意选择。 |
![]() |
5
1
从技术上讲,如果不同时执行这两项操作,就不可能确定哪个更快。就为完成工作而调用的代码而言,当您需要执行其中一个选项时,已经太迟了。您可以有一个例程,在应用程序初始化阶段对两个示例例程进行基准测试,然后设置一个标志。但这引入了一个全新的测试,为每个目标调用增加了开销。归根结底是:
除非您正在构建嵌入式系统或具有非常具体的性能调优要求,4是您的最佳选择。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |