免费注册 查看新帖 |

Chinaunix

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

[技术动态] llvm后端的QBASIC编译器性能接近C ing , 彻底击败 java/python [复制链接]

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-21 20:29 |只看该作者 |倒序浏览
fibonacci(40) benchmark test for QBASIC

关于 QBASIC 编译期的信息可以看 实现 QBASIC 编译器


- - - - - - - - - - - - - - - - - - - - -
C gcc -O2

代码:
  1. #include <stdio.h>
  2.      
  3.     int fibonacci(n) {
  4.     if (n < 2) {
  5.     return n;
  6.     }
  7.     return fibonacci(n - 2) + fibonacci(n - 1);
  8.     }
  9.      
  10.     int main() {
  11.     printf("%dn", fibonacci(40));
  12.     return 0;
  13.     }
复制代码
- - - - - - - - - - - - - - - - - - - - -
real 0m0.462s
user 0m0.462s
sys 0m0.000s
===========================================


jua:

代码:
  1. local function fibonacci(n)
  2.     if n < 2 then
  3.     return n
  4.     end
  5.     return fibonacci(n - 2) + fibonacci(n - 1)
  6.     end
  7.      
  8.     io.write(fibonacci(40), "n")
复制代码
- - - - - - - - - - - - - - - - - - - - -
real 0m16.516s
user 0m16.507s
sys 0m0.002s

===========================================

python

代码:
  1.    def fibonacci(n):
  2.     if n < 2:
  3.     return n
  4.     return fibonacci(n - 2) + fibonacci(n - 1)
  5.      
  6.     print fibonacci(40)
复制代码
- - - - - - - - - - - - - - - - - - - - -
real 0m46.014s
user 0m45.962s
sys 0m0.035s
===========================================



  QBASIC
使用的编译器  llvm-qbc fab.bas


代码:
  1. function fibonacci( n as long ) as long
  2.     if n < 2 then return n
  3.     return fibonacci(n - 2) + fibonacci(n - 1)
  4.   end function
  5.      
  6.   sub main()
  7.     print fibonacci(40 )
  8.   end sub
复制代码
- - - - - - - - - - - - - - - - - - - - -
real 0m1.065s
user 0m1.065s
sys 0m0.000s
===========================================

QBASIC is just a little slower that C ! I haven't optimize the code !




我的 QBASIC 编译器成功打败了除 C 以外的所有语言!~~~

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
2 [报告]
发表于 2012-11-21 21:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
3 [报告]
发表于 2012-11-21 21:26 |只看该作者
pmerofc 发表于 2012-11-21 21:07
大赞啊


书已经收到 ! 谢谢~ 收藏了.

代码没有排版好, 很是遗憾啊.

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
4 [报告]
发表于 2012-11-21 22:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2012-11-21 23:22 |只看该作者
写个前端其实不难,能锻炼下编码能力,不过也仅此而已,倒是后端的各种技术,更值得学习。

而且这个的效率比java和python高觉得也是因为LLVM的原因,和前端没有一点关系....

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
6 [报告]
发表于 2012-11-22 09:49 |只看该作者
bluesea147 发表于 2012-11-21 23:22
写个前端其实不难,能锻炼下编码能力,不过也仅此而已,倒是后端的各种技术,更值得学习。

而且这个的效 ...


站着说话不腰痛。 如果前端不难的话, python-llvm 就不会夭折了。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
7 [报告]
发表于 2012-11-22 09:57 |只看该作者
bluesea147 发表于 2012-11-21 23:22
写个前端其实不难,能锻炼下编码能力,不过也仅此而已,倒是后端的各种技术,更值得学习。

而且这个的效 ...


如果前端不难的话,python-llvm就不会夭折了。llvm只不过让我写编译器的时候专注于关注语言,并没有简化“编译”本身。倒是简化了许多和汇编相关的东西。一个语言,基本的控制流程都是一样的,但是,真正和其他语言区别开来的就是“类型系统”。这个是无论如何也不可能由llvm帮你实现的

你可能还不知道 llvm 是什么吧? llvm 是个跨平台的汇编语言。 仅此而已。llvm 能帮你的优化很有限。 无外乎 寄存器分配和指令重排序。 这都比较底层,具体效率和机器严重相关。

编译器还需要在高层做优化, 代码折叠,尾递归优化, 内联展开, 都需要编译器实现。 llvm 在汇编层面不可能替你实现。在这个高层做的优化才能真正提升编译器的效率

论坛徽章:
0
8 [报告]
发表于 2012-11-22 11:18 |只看该作者
llvm广告宣传贴

论坛徽章:
0
9 [报告]
发表于 2012-11-22 13:35 |只看该作者
cool! 楼主能不能推荐一些关于编译器优化方面的书籍、帖子什么的?我对这个很感兴趣。先谢过了。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
10 [报告]
发表于 2012-11-22 18:01 |只看该作者
qinggeng 发表于 2012-11-22 13:35
cool! 楼主能不能推荐一些关于编译器优化方面的书籍、帖子什么的?我对这个很感兴趣。先谢过了。



这种东西, 最好的就是  THQ 的书了。他会详细的告诉你  ++i 和 i++ 执行性能有多不一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP