Julia是一款高级高效为技术计算(technical computing)而设计的编程语言,其语法与其他计算环境类似。其为分布式计算和并行所设计,最知名的地方在于其接近C语言的高效率。

按开发者的话说,“我们希望这门开源语言像C一样快…像Python一样通用,像R做统计那么简单,像Perl做文本处理那么方便,像Matlab的线性代数一样强大,还和Shell一样可以把各种程序连接起来”。

打开Julia的首页http://julialang.org/,在一长串特性介绍后面,便是和各种语言的对比测试。

测试以C为标准,从结果上来看Julia的性能比Python高一个数量级,而比R语言高一到两个数量级。是否真的如此呢,笔者进行了简单测试。

测试使用Julia官方提供的测试程序,使用炼数成金提供的天河二号资源,使用1节点1核心计算(Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz),Julia = 4.5,Python = 2.7.9/3.5.2,R = 3.3.2

测试过程

1, 首先下载官方标准测试程序https://github.com/JuliaLang/julia/tree/master/test/perf

2, 这里测试micro-benchmark,阅读代码可知这里测试了7个项目:

"fib" = "Recursive fibonacci"

"parse_int" = "Integer parsing"

"quicksort" = "Sorting of random numbers using quicksort"

"mandel" = "Calculation of mandelbrot set"

"pi_sum" = "Summation of a power series"

"rand_mat_stat" = "Statistics on a random matrix"

"rand_mat_mul" = "Multiplication of random matrices"

可以看出这里测试了许多常见的场景如调用函数,解析string,排序,循环,随机数生成,向量操作等。代码如图。

3, 登陆天河二号进行测试

使用Xshell连接天河,并查看天河已经部署的Julia

可查看天河CPU信息

运行Julia提供的测试,结果如下:

结果整理如下,附上官方benchmark

可以看出Julia果然快得不可思议,转换成以Julia为标准的形式观察:

基本和官方数据一致,Julia 0.4.5甚至更快,稳定地比Python快一个数量级,而R语言则在计算斐波拉契和快排时落后两个数量级。这体现了Julia开发比C简单效率接近于C地特性。作者还贴心的比较了实现randmatstat的Julia和C的代码量,这里截图并横向显示(右上角为Julia代码量)。

总结,尽管Julia在国内并不算特别火热,但作为面向高性能计算语言,其高效易用的特点值得我们的关注。通过语言本身的设计,Julia从底层的循环到高级的编程风格应用,仅牺牲少量的性能就可以用简单的方式实现复杂的算法。

引用:

1. Julia主页 http://julialang.org/

2. Julia中文社区http://julialang.cn/

3. Julia语言:让高性能科学计算人人可http://www.csdn.net/article/2014-03-12/2818732

最后放上一张各语言官方benchmark对比图 http://julialang.org/benchmarks/

《大数据必知的java基础》立足于Java语言本身及Java技术开发。会涉及并贯穿有关学习大数据系统和软件必知的一些预备知识。点击下方二维码报名课程

在天河二号上对比Julia,Python和R语言的更多相关文章

  1. 比较分析C++、Java、Python、R语言的面向对象特征,这些特征如何实现的?有什么相同点?

    一门课的课后题答案,在这里备份一下: 面向对象程序设计语言 –  比较分析C++.Java.Python.R语言的面向对象特征,这些特征如何实现的?有什么相同点? C++ 语言的面向对象特征: 对象模 ...

  2. 用蒙特卡洛方法计算派-python和R语言

    用蒙特卡洛方法算pi-基于python和R语言 最近follow了MOOC上一门python课,开始学Python.同时,买来了概率论与数理统计,准备自学一下统计.(因为被鄙视过不是统计专业却想搞数据 ...

  3. 预测分析建模 Python与R语言实现

    预测分析建模 Python与R语言实现 目录 前言 第1章 分析与数据科学1第2章 广告与促销10第3章 偏好与选择24第4章 购物篮分析31第5章 经济数据分析42第6章 运营管理56第7章 文本分 ...

  4. Python调用R语言

    网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不 ...

  5. 结合MATLAB、Python、R语言,在求得显著差异的边(节点对)之后,怎么画circle图

                                                            先来看看成果图: OK,开始画图: 实验背景声明:在脑影像分析中,我们首先构建脑网络,然 ...

  6. python调用R语言,关联规则可视化

    首先当然要配置r语言环境变量什么的 D:\R-3.5.1\bin\x64; D:\R-3.5.1\bin\x64\R.dll;D:\R-3.5.1;D:\ProgramData\Anaconda3\L ...

  7. python 和 R 语言中的等差数列

    等差数列的通项公式:an = a0 + n*d. 数学上 n 是可以取遍整个整个正整数集的,在现实中,n  是有范围的. 1.R 语言用 seq()  函数产生等差数列: 2.python 中 ran ...

  8. python 和 R 语言 中的 range() 函数

    1.python 中的 range() 函数生成整数序列,常用于 for 循环的迭代. 示例: 2.R 语言中的 range() 函数返回一个数值向量中的最小值和最大中,常用于求极差. 示例: 按语: ...

  9. 机器学习算法基础(Python和R语言实现)

    https://www.analyticsvidhya.com/blog/2015/08/common-machine-learning-algorithms/?spm=5176.100239.blo ...

随机推荐

  1. Java操作XML的JAXB工具

    在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding). 利用这个工具很方便生成XML的tag和Java类的对应关系.参照网上 ...

  2. 安装SQL Server提示“等待数据库引擎恢复句柄失败”

    1.如果MSSQLSERVER服务已经启动,则停止. 2.以管理员身份打开命令行,执行命令:"C:\Program Files\Microsoft SQL Server\MSSQL10_50 ...

  3. 【Unity】8.4 扩展UnityGUI

    分类:Unity.C#.VS2015 创建日期:2016-04-27 一.简介 有很多种方法可以补充和扩展 UnityGUI 以满足您的需求.你可以混合和创建控件,并且可以有多种方法来规定用户 GUI ...

  4. pc客户端网页录音和压缩

    web录音的功能,也就是怎么使用 getUserMedia 音频上传 栗子中最后返回的是Blob数据 return new Blob([dataview], { type: type }) 因为对ht ...

  5. MyBatis传入集合 list 数组 map参数的写法

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.ite ...

  6. FFmpeg(13)-创建OpenSLES混音器CreateOutputMix初始化

    一.包含头文件和库文件 CMakeLists target_link_libraries( # Specifies the target library. native-lib OpenSLES # ...

  7. Linux 移动或重命名文件/目录-mv 的10个实用例子

    本文导航 -初识 mv 命令03% -1.移动文件08% -2.移动多个文件15% -3.移动目录23% -4.重命名文件或目录27% -5. 重命名目录35% -6. 打印移动信息39% -7. 使 ...

  8. Django admin 常用方法

    1.调整页面头部显示内容和页面标题 #admin.py admin.site.site_header = '广告业务系统' admin.site.site_title = '广告业务系统'

  9. Javascript 中ajax实现前台向后台交互

    第一种情况:前台传入字符串参数 后台返回json字符串.或是json数组  代码如下: 前台: $.ajax({ url: "xxx/xxx.action", data: &quo ...

  10. Eigen教程(4)

    整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html Array类和元素级操作 为什么使用Array 相对于Matrix提供的线性代数运算 ...