你可曾想过有那么一门语言:

这门语言能够有C语言一样的速度,Ruby一样得活力(dynamism)。像homoiconic一样的语言,它像Lisp一样有宏,但是也像Matlab一样有显而易见、熟悉的数学标记。

像Python一样适用,像R语言一样适用于统计,像Perl一样适用于字符串处理,像线性代数Matlab一样强大,像shell一样擅长粘合程序。 它还具有互动性且能够被编译。

她的名字叫: Julia

Julia是一个新的高性能动态高级编程语言。语法和其他编程语言类似,易于其他语言用户学习。Julia拥有丰富的函数库,提供了数字精度、精致的增幅器(sophisticated amplifier)和分布式并行运行方式。核心函数库等大多数库是由Julia编写,但也用成熟的C和FORTRAN库来处理线性代数、随机数产生和字符串处理等问题。Julia语言可定义函数并且根据用户自定义的参数类型组合再进行重载。

JIT高性能编译器

Julia使用的JIT(Just-in-Time)实时编译器很有效地提高了它的运行效率,在某些地方甚至能比得上C和C++。

下面通过标准测试程序来测试下它的效率,你可以自己比较下各语言的运行效率。

注:运行环境是MacBook Pro,2.53GHz,Intel Core2 Duo CPU和8G 1066MHz,DDR3内存。

上表中只有C++运行时间是绝对时间,其它都是相对于C++的相对时间,数值越小代表用时越少。除少数几项测试Julia惜败于Matlab和JavaScript外,Julia完胜其他高级语言,甚至在pi summation上,成功以25%的优势击败C++。通过使用Intel核心数学库(MKL),MatLabs在矩阵乘法运算中稍占便宜,但是拥有MKL授权的Julia同样可以使用Intel MKL库,不过默认的开源BLAS库性能也不错。

这个测试表是通过编译器性能对一系列常用代码模式进行分析而得出的。比如:字符串解析、函数调用/回调、排序和数值循环、生成随机数和数组运算等。

Julia克服了高级语言一直难以逾越的难关:标量算数循环(在pi summation上就能体现出来。)。Matlab的浮点运算JIT和 V8 JS引擎对此也处理得很好。但JS不支持LAPACK等线性代数库导致了在矩阵运算中的低性能,而Julia有比较多的方法消除负载(overhead),使得它可以轻松支持任何函数库。

矩阵统计的Julia代码虽然性能上比不上C++但却要简洁得多。然而,规范和编制太过随意可能会在将来成为一个问题。

参考:

1. http://julialang.org/

最新文章

  1. git+coding.net记录篇
  2. Beta版本冲刺———第四天
  3. ViewPager部分源码分析一:加载数据
  4. Android学习(未完)
  5. 对getElementsByTagName("*")获取全部元素的总结
  6. 按后退键退出Android程序
  7. iOS NSMutableArray替换某个元素
  8. hadoop2.2.0 MapReduce的序列化
  9. 浅析指针(pointer)与引用(reference)
  10. myeclipse项目部署到idea常见问题
  11. RHEL7/CentOS7 安装Zabbix
  12. python3脚本打开摄像头
  13. js dictionary
  14. 聊聊Google DSM产品的发布
  15. VSCode插件开发全攻略(三)package.json详解
  16. 对YUV数据进行裁剪
  17. iOS WKWebView全屏浏览网页返回 状态栏问题
  18. javaScript read blob
  19. RISC与CISCCPU构架
  20. CF 329C(Graph Reconstruction-随机化求解-random_shuffle(a+1,a+1+n))

热门文章

  1. openstack学习-Horizon安装(八)
  2. python全栈开发day21-2 几个装饰器总结
  3. Redis数据结构之字符串
  4. C#连接数据库MD5数据库加密
  5. HTTP协议学习笔记(三)
  6. MySQL 5.7基于GTID复制的常见问题和修复步骤(二)
  7. Django 学习第二天——URL路由及模板渲染方式
  8. vue+webpack 遇到的问题总结
  9. 漫谈可视化Prefuse(六)
  10. 图文并茂 —— 基于Oozie调度Sqoop