如何解决就执行时间而言,哪个功能更快? beta或alpha?
您希望哪个更快? (假设数组a[100]
和b[100]
是初始化的全局变量)
void beta(){
int i;
for (i=0;i<100;i++){
a[i] = a[i] + b[i];
}
}
void alpha(){
int i=0;
while (i<100){
a[i] += b[i++];
a[i] += b[i++];
a[i] += b[i++];
a[i] += b[i++];
}
}
解决方法
为避免UB,我重新编写了protected void addModelProperty(String propertyName,Object newValue) {
try {
MethodUtils.invokeMethod(model,"add" + propertyName,newValue);
} catch (ReflectiveOperationException e) {
}
}
函数:
alpha
,生成的代码取决于平台:
对于x86,它完全相同。
void alpha(){
int i=0;
while (i<100)
{
a[i] += b[i];
i++;
a[i] += b[i];
i++;
a[i] += b[i];
i++;
a[i] += b[i];
i++;
}
}
但是,如果我们考虑使用ARM Cortex,则alpha的执行速度会更快。
beta:
xor eax,eax
.L2:
movdqa xmm0,XMMWORD PTR a[rax]
paddd xmm0,XMMWORD PTR b[rax]
add rax,16
movaps XMMWORD PTR a[rax-16],xmm0
cmp rax,400
jne .L2
ret
alpha:
xor eax,eax
.L6:
movdqa xmm0,400
jne .L6
ret
b:
.zero 400
a:
.zero 400
因此,一般的答案是:始终对代码进行基准测试
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。