免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 62811 | 回复: 24
打印 上一主题 下一主题

llvm vs gcc 我被雷到了, 速度相差300多倍,你还用GCC吗! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-03 18:42 |只看该作者 |倒序浏览
本帖最后由 zhangsuozhu 于 2011-01-03 18:43 编辑

相同的代码。300倍的速度差别。GCC真老了!

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5. int main()
  6. {
  7.     char s[] = " select * from aaaa where id=1;select name ,id from bbbb";
  8.     int i,j;
  9.     int t = time(NULL);
  10.     char *p = NULL;
  11.     for (i = 0;  i < 100000000; i ++)
  12.     {   
  13.         j = i%sizeof(s)-1;
  14.         s[j] = ((j&0xff)+(i&0xff))&0xff;
  15.         p = s;
  16.         while(*p != '\0')
  17.         {
  18.             if (strstr(p, "abs w fs e w fw"))
  19.             {
  20.                 break;
  21.             }
  22.             else
  23.             {
  24.                 p ++;
  25.             }
  26.         }
  27.         
  28.     }
  29.     printf("%lu\n",time(NULL) -t);
  30.     return 0;
  31. }
复制代码
makefile:

  1. llvm:
  2.         llvm-gcc -O3 -Wall -o test test.c  
  3. gcc:
  4.         gcc -O3 -Wall -o test test.c  
复制代码
对比测试:
用llvm的    1秒
用gcc的     317秒

300多倍的差别。求验证!  求高手优化GCC

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
2 [报告]
发表于 2011-01-03 19:07 |只看该作者
个案吧。

论坛徽章:
0
3 [报告]
发表于 2011-01-03 19:14 |只看该作者
回复 2# fender0107401


    你测测试试! 我知道llvm在字符串搜索上到底与GCC有多大优势。如果非常大考虑换了GCC

论坛徽章:
0
4 [报告]
发表于 2011-01-03 19:29 |只看该作者
估计llvm把循环优化掉了,反汇编看看吧

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
5 [报告]
发表于 2011-01-03 19:32 |只看该作者
我认为这个数量级别的差异不是“具体实现”层面上所能引起的,

应该是“算法”层面上的问题,应该找找具体的原因,比如找一个懂clang和gcc的人出来讨论一下,

比如说p,

或者是不是看看汇编也能有点什么线索。

论坛徽章:
0
6 [报告]
发表于 2011-01-03 19:34 |只看该作者
回复 5# fender0107401


    P姨不是永远的离开我们了吗?哎~~~~``

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
7 [报告]
发表于 2011-01-03 19:38 |只看该作者
回复 6# zhangsuozhu

她永远活在我们心中。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
8 [报告]
发表于 2011-01-03 19:44 |只看该作者
回复 1# zhangsuozhu


    这样的差别,应该是clang吧循环给优化掉了= =

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
9 [报告]
发表于 2011-01-03 20:31 |只看该作者
实际测试了一下,将循环次数减少了个0,gcc55秒,clang54秒。没安llvm-gcc。

论坛徽章:
0
10 [报告]
发表于 2011-01-03 20:34 |只看该作者
本帖最后由 cigerma 于 2011-01-03 20:37 编辑

这是我笔记本上的测试结果,系统是Debian Testing i386:
llvm-gcc-4.2:
  1. [xuming@tuxtoy: ~ ] $ make llvm
  2. llvm-gcc-4.2 -O3 -Wall hello.c -o hello
  3. [xuming@tuxtoy: ~ ] $ time ./hello
  4. 1577059075

  5. real        12m50.999s
  6. user        12m43.840s
  7. sys        0m0.200s
复制代码
gcc version 4.4.5:
  1. [xuming@tuxtoy: ~ ] $ make gcc
  2. gcc -O3 -Wall hello.c -o hello
  3. [xuming@tuxtoy: ~ ] $ time ./hello
  4. 769

  5. real        12m48.128s
  6. user        12m41.952s
  7. sys        0m0.172s
复制代码
这里有关于gcc和llvm的权威测试:
GCC, LLVM-GCC, DragonEgg, Clang
LLVM & Clang Against GCC 4.5
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP