V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
aliipay
V2EX  ›  程序员

性能优化

  •  
  •   aliipay · May 6, 2017 · 4342 views
    This topic created in 3281 days ago, the information mentioned may be changed or developed.
    void memory_xor(uint64_t *dst, const uint64_t *src, uint32_t len)
    {
    for (uint32_t i = 0; i<len; i++)
    {
    *dst++ ^= *src++;
    }
    }
    len 集中在 100-200,dst,src 已经考虑 8 字节对齐,函数多次重复调用,消耗时间占总时间大概在 60-70%还有没有优化空间?
    14 replies    2017-05-07 09:38:25 +08:00
    aliipay
        2
    aliipay  
    OP
       May 6, 2017
    @yangqi 看上去很厉害的样子,先慢慢研究下。
    问题是多线程实现?我的程序本身是多线程了,cpu 已经满了,不知道能否提升性能
    denghongcai
        4
    denghongcai  
       May 6, 2017
    循环次数这么一点点就不要搞 OpenMP 了
    aliipay
        5
    aliipay  
    OP
       May 6, 2017
    @yangqi
    gcc version 4.8.5 20150623
    warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
    我单独编译一个 demo 是正常的 加入到现有工程就报这个警告
    Fishdrowned
        6
    Fishdrowned  
       May 6, 2017 via Android
    循环展开
    http://en.wikipedia.org/wiki/Duff%27s_device
    不知道这个现在还有没有用
    aliipay
        7
    aliipay  
    OP
       May 6, 2017
    @Fishdrowned
    这个试过了,能提高 10%左右
    zk8802
        8
    zk8802  
       May 6, 2017 via iPhone
    开启优化之后,编译器应该可以自动进行 loop unrolling 的。你编译之后的汇编代码长什么样?
    billlee
        10
    billlee  
       May 6, 2017
    你编译的时候加了 -march=native 吗?
    aliipay
        11
    aliipay  
    OP
       May 6, 2017
    @billlee 每加,加了更慢
    现在用的是-fprefetch-loop-arrays -g -ggdb -D__USE_ISOC99 -DNDEBUG -Ofast -fPIC -Wall -std=c++11
    linux40
        12
    linux40  
       May 7, 2017 via Android
    不考虑 memcpy 吗
    linux40
        13
    linux40  
       May 7, 2017 via Android
    @linux40 眼瞎了。。。
    linux40
        14
    linux40  
       May 7, 2017 via Android
    不考虑 restrict 吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5100 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 09:06 · PVG 17:06 · LAX 02:06 · JFK 05:06
    ♥ Do have faith in what you're doing.