微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

就执行时间而言,哪个功能更快? beta或alpha?

如何解决就执行时间而言,哪个功能更快? 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

因此,一般的答案是:始终对代码进行基准测试

https://godbolt.org/z/sWjqE1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。