V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aliipay
V2EX  ›  程序员

性能优化

  •  
  •   aliipay · 2017-05-06 01:09:47 +08:00 · 3830 次点击
    这是一个创建于 2763 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    2017-05-07 09:38:25 +08:00
    aliipay
        2
    aliipay  
    OP
       2017-05-06 01:28:22 +08:00
    @yangqi 看上去很厉害的样子,先慢慢研究下。
    问题是多线程实现?我的程序本身是多线程了,cpu 已经满了,不知道能否提升性能
    denghongcai
        4
    denghongcai  
       2017-05-06 01:39:56 +08:00
    循环次数这么一点点就不要搞 OpenMP 了
    aliipay
        5
    aliipay  
    OP
       2017-05-06 02:19:15 +08:00
    @yangqi
    gcc version 4.8.5 20150623
    warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
    我单独编译一个 demo 是正常的 加入到现有工程就报这个警告
    Fishdrowned
        6
    Fishdrowned  
       2017-05-06 07:51:38 +08:00 via Android
    循环展开
    http://en.wikipedia.org/wiki/Duff%27s_device
    不知道这个现在还有没有用
    aliipay
        7
    aliipay  
    OP
       2017-05-06 11:53:52 +08:00
    @Fishdrowned
    这个试过了,能提高 10%左右
    zk8802
        8
    zk8802  
       2017-05-06 12:10:25 +08:00 via iPhone
    开启优化之后,编译器应该可以自动进行 loop unrolling 的。你编译之后的汇编代码长什么样?
    zwzmzd
        9
    zwzmzd  
       2017-05-06 13:01:07 +08:00 via iPhone
    billlee
        10
    billlee  
       2017-05-06 13:42:56 +08:00
    你编译的时候加了 -march=native 吗?
    aliipay
        11
    aliipay  
    OP
       2017-05-06 15:54:34 +08:00
    @billlee 每加,加了更慢
    现在用的是-fprefetch-loop-arrays -g -ggdb -D__USE_ISOC99 -DNDEBUG -Ofast -fPIC -Wall -std=c++11
    linux40
        12
    linux40  
       2017-05-07 09:34:19 +08:00 via Android
    不考虑 memcpy 吗
    linux40
        13
    linux40  
       2017-05-07 09:35:04 +08:00 via Android
    @linux40 眼瞎了。。。
    linux40
        14
    linux40  
       2017-05-07 09:38:25 +08:00 via Android
    不考虑 restrict 吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 21:46 · PVG 05:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.