面向科学计算的高性能动态编程语言 Julia

面向科学计算的高性能动态编程语言 Julia

MIT
跨平台
2012-02-27
NorthGod

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++但却要简洁得多。然而,规范和编制太过随意可能会在将来成为一个问题。

Julia代码示例:

function mandel(z)  
    c = z 
    maxiter = 80 
    for n = 1:maxiter  
        if abs(z) > 2  
            return n-1  
        end  
        zz = z^2 + c  
    end  
    return maxiter  
end  

function randmatstat(t)  
    n = 5 
    v = zeros(t)  
    w = zeros(t)  
    for i = 1:t  
        a = randn(n,n)  
        b = randn(n,n)  
        c = randn(n,n)  
        d = randn(n,n)  
        P = [a b c d]  
        Q = [a b; c d]  
        v[i] = trace((P.'*P)^4)  
        w[i] = trace((Q.'*Q)^4)  
    end  
    std(v)/mean(v), std(w)/mean(w)  
end

为并行处理和云计算而生

Julia为分布式计算提供很多关键模块,使得它可以更加灵活地支持多种并行处理。

虽然还是早期版本,Julia已经支持了云计算。下面是基于交互性的Julia会话截图:

Julia将提供更加完整的性能支持云计算操作,比如分享和编辑,包括数据管理、数据挖掘和可视化操作等。它还允许用户操作大数据类型而不用关心数据操作行为。

免费、开源和Library Friendly

TJulia的核心代码遵循MIT协议,而其他库各自遵循GPL/LGPL/BSD等协议。用户还可以方便地将Julia作为核心功能共享库与C/FORTRAN代码联合使用。

的码云指数为
超过 的项目
加载中

评论(15)

zsz0
zsz0
非常有潜力
拾光TM
拾光TM
京香大法好~~~
白豆腐徐长卿
白豆腐徐长卿
我推荐#Julia#
DullCat-c
DullCat-c
学不动了
阿信sxq
阿信sxq
百度搜索这个,第一页还是编程语言,第二也开始就是一些看不懂的东西了
狄龙-
狄龙-
取这个名字对于初学者来说太不友好了
梅开源
梅开源
c++后面几个实现肯定有问题
Youtubeornotobe
Youtubeornotobe
julia 这个关键词 可以有
鉴客
鉴客
你们开始学习新语言了吗?
likester
likester
有没有基于Julia的web开发框架

Julia 语言三位作者获得 Wilkinson 数字软件奖

麻省理工学院孵化的 Julia 语言的的三个作者获得 2019年的 James H. Wilkinson 数字软件奖。 Julia 是由 Jeff Bezanson 博士、前麻省理工学院 Julia Lab 研究院Stefan Karpinski和Viral B. ...

2018/12/28 08:29

Julia 1.0.1 发布,高性能动态高级编程语言

Julia 1.0.1 发布了,这是 Julia 1.0 的第一个补丁版本。它仅包含错误修正和性能改进,没有新功能或其他变更。 Bug fixes #28568 - Fix vec of adjoint vector #28592 - fix #28576, parsin...

2018/10/02 14:35

优化过程 PK :Julia 能打败 Python 和 R 笑到最后吗?

编译自:Julia vs R vs Python: simple optimization 作者:ZJ,数据科学家,全栈工程师,信用风险模型团队负责人。 在这篇文章中,作者通过一个简单的似然函数优化(Maximum Likelihood Op...

2018/08/31 07:44

关于编程语言 Julia,开发团队有这些想告诉你

Julia 1.0 正式版发布已过去一周多,官方表示 1.0 版本积累了富有野心的程序员们的十年心血。Julia 可以看作是一门集众家之所长的编程语言,在首次公开时开发团队就已明确其需求: 我们想要一...

2018/08/19 07:57

集 Python、C、R、Ruby 之所长,Julia 1.0 正式发布

动态编程语言 Julia 迎来了 1.0 正式版本,你可以通过这里下载 Julia 1.0 正式版。 Julia 可以看作是一门集众家之所长的编程语言,在首次公开时开发团队就已明确其需求: 我们想要一种拥有自...

2018/08/11 07:08

动态编程语言 Julia 0.7 alpha 版本新增许多语言特性

动态编程语言 Julia 0.7 alpha 版本已发布,供开发者开始升级软件包。v0.7 包含 v1.0 弃用的功能,所以当 alpha / beta 阶段结束时,所有的 depwarns 都会被取出。 官方原话是 "An intermed...

2018/06/03 07:45

Julia 0.6.0 发布,动态编程语言

Julia 0.6.0 发布了。Julia是一个新的高性能动态高级编程语言。语法和其他编程语言类似,易于其他语言用户学习。Julia拥有丰富的函数库,提供了数字精度、精致的增幅 器(sophisticated amp...

2017/06/21 07:46

Julia 0.5.2 和 0.6.0-rc1 发布,动态编程语言

Julia 0.5.2 和 0.6.0-rc1 发布了,本次更新包括了很多新的语言特性。 Julia是一个新的高性能动态高级编程语言。语法和其他编程语言类似,易于其他语言用户学习。Julia拥有丰富的函数库,提供...

2017/05/10 07:48

Julia 0.5.0 发布,动态编程语言

Julia 0.5.0 发布了,本次更新包括了很多新的语言特性。 Julia是一个新的高性能动态高级编程语言。语法和其他编程语言类似,易于其他语言用户学习。Julia拥有丰富的函数库,提供了数字精度、...

2016/09/20 13:24

Julia 0.4.6 发布,动态编程语言

Julia 0.4.6 发布了。 Julia是一个新的高性能动态高级编程语言。语法和其他编程语言类似,易于其他语言用户学习。Julia拥有丰富的函数库,提供了数字精度、精致的增幅 器(sophisticated amp...

2016/07/04 08:05

没有更多内容

加载失败,请刷新页面

暂无问答

Ten minutes to let you know the Julia language

Introduction Julia is a flexible dynamic language for science and numerical computing with performance comparable to traditional statically typed languages. Perhaps you can use ...

2018/08/24 22:00
12
0
Julia 1.0 中文文档

欢迎来到Julia 1.0的文档。 请阅读发布博客文章,了解该语言的一般概述以及自Julia v0.6以来的许多更改。请注意,0.7版本与1.0一起发布,以提供1.0版本之前的软件包和代码的升级路径。0.7和1...

2018/08/22 08:25
28
0
JAVA成为本年度最佳编程语言

January Headline: Java is TIOBE's Programming Language of 2015!

2016/01/04 03:39
38
0
Julia篇(一)-变量与基本数据类型

变量的赋值 # 给 x 赋值为 100 julia> x = 100 100 # 数学运算 julia> x + 1 101 # 重新给 x 赋值 julia> x = 1 + 1 2 # 字符串赋值 julia> x = "Hello World!" "Hello World!" Julia 的变量...

2018/07/04 16:12
195
0
“全新” 编程语言 Julia开箱体验

本文共 851字,阅读大约需要 3分钟 ! 概 述 Julia 是一个 “全新”的高性能动态编程语言,前两天迎来了其 1.0 正式版的重大更新。Julia集 Python、C、R、Ruby 之所长,感觉就像一种脚本语言...

2018/08/15 06:29
4.9K
3
让代码飞起来——高性能Julia学习笔记(二)

首发于 https://magicly.me/hpc-julia-2/ 接上一篇:让代码飞起来——高性能 Julia 学习笔记(一), 继续整理高性能 Julia 学习笔记。 数字 Julia 中 Number 的 size 就跟 C 语言里面一样,...

2018/12/07 19:27
10
0
让代码飞起来——高性能Julia学习笔记(一)

原文首发于https://magicly.me/hpc-julia/ 最近有个项目是计算密集型的, 最开始用 TS 快速实现了算法原型, 后来改用 Go 重写, Go 的 goroutine 用起来还是蛮爽的, 很容易把所有 cpu core...

2018/12/05 11:53
6
0
R, Octave, and Python: Which Suits Your Analysis Needs?

 Analysts and engineers on a budget are turning to R, Octave and Python instead of data analysis packages from proprietary vendors. But which of those is right for your need...

2014/06/13 12:18
49
0
优化过程对比:Julia 能打败 Python 和 R 成最终赢家吗?

编译自:Julia vs R vs Python: simple optimization 作者:ZJ,数据科学家,全栈工程师,信用风险模型团队负责人。 在这篇文章中,作者通过一个简单的似然函数优化(Maximum Likelihood Op...

2018/08/29 17:50
70
0
Julia的IDE已经推出Julia Studio

Julia的IDE已经推出Julia Studio,Julia Studio 目前版本为0.4.3,内置Julia 0.2

2014/01/07 02:32
256
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部