如果你喜欢python,那你迟早会喜欢上julia的!

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

这门语言能够有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/

时间: 2024-07-31 19:09:50

如果你喜欢python,那你迟早会喜欢上julia的!的相关文章

读《我不喜欢这世界,我只喜欢你》有感

以前很少读小说,应该说也很少读书,除了上学时的课本外,基本没有认认真真完完全全读过一本书,无论是课外的还是专业的,而别人反复读一本书好几遍这种情况只出现在自己看过的各种别人的鸡汤文中.读书的时候写作文很好,英语很好,现在写作已经完全放弃了,前段时间由于工作需要天天写"作业"已经快被逼疯,英语也是从很好的时候放弃了,理由是不用再考试了.这样想想,考试其实真的是个特别有用的促进学习的方法,有多少人离开校园就再也没有学习过,跟别人讲述的时候只能沾沾自喜于"以前上学的时候我那啥啥啥可

python 学习笔记 3 -- 数据结构篇上

数据结构是可以处理一些 数据 的 结构 .或者说,它们是用来存储一组相关数据的.在Python中有三种内建的数据结构--列表.元组和字典.本文主要对这三种数据类型以及相关的使用做介绍,以例子的形式演示更加容易理解! 1.列表(List) 列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.在Python中,你在每个项目之间用逗号分割. 列表中的项目应该包括在**方括号**中,这样Python就知道你是在指明一个列表.一旦你创建了一个列表,你可以添加.删除或是搜索列表中的

Python学习第一周总结(上)

Python基础知识总结 一.前期了解 1.1解释型语言和编译型语言 编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了. 解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢. C/C++ 等都是编译型语言,而Java,C#,Python等都是解释型语言. 1.2动态类型语言和静态类型语言 动态类型语言:指在运行期间才去做数据类型检查的语言.在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语

python之模块ftplib(实现ftp上传下载代码)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块ftplib(实现ftp上传下载代码) #需求:实现ftp上传下载代码(不含错误处理) from ftplib import FTP def ftpconnect(): ftp_server='ftp.python.org' ftp=FTP() ftp.set_debuglevel(2)#打开调式级别2 ftp.connect(ftp_server,21) ftp.login('',''

python写个简单的文件上传是有多难,要么那么复杂,要么各种,,,老子来写个简单的

def upload(url,params): ''' 上传文件到服务器,不适合大文件 @params url 你懂的 @params {"action":"xxx","@file","file_path"} 普通参数 key:value 文件key头部加@ ''' import os import urllib2 BOUNDARY = "0450de9528f040078csuxianbaozic06"

python模块之HTMLParser抓页面上的所有URL链接

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser抓页面上的所有URL链接 import urllib #MyParser类写法一 ''' from HTMLParser import HTMLParser class MyParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) def handle_starttag(self, tag, a

如果你特别喜欢一个人 那么你一定配不上他

如果你特别喜欢一个人 那么你一定配不上他... ------- 患得患失 瞻前顾后 反倒丢失了当下天生我才必有用,却一直不知怎么用,---------------- 别让任何人打乱你的人生节奏 I know people who graduted at 21 and didn't get a job until they were 27 I know people who graduted late at 25 and they found work immediately I know peo

?《Python自动化测试修炼宝典》线上课程已经成功入驻网易云课堂......

<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂...... IT测试老兵利用工作之余,亲自录制的<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂,想要提高测试技术的小伙伴可以线上购买课程进行学习. 课程背景 测试人员进阶实战课程.本套课程以作者多年测试实战经验为背景,结合大量测试案例深入浅出讲解目前主流web端.app端自动化测试框架以及使用Python如何从0到1实现接口测试框架的搭建. 课程特色 系统教学+实战案例+开放源码.涵盖Python3

Python爬虫入门到实战-史上最详细的爬虫教程

马哥高薪实战学员 [Python爬虫入门到实战-史上最详细的爬虫教程,限时免费领取] 爬虫分类和ROBOTS协议 爬虫URLLIB使用和进阶 爬虫URL编码和GETPOST请求 原文地址:https://blog.51cto.com/10515215/2385329

python通过snmp获取usg接口上的公网IP

在华为usg防火墙上配置了snmp v3,通过python的netsnmp模块获取接口上的公网上. usg上的snmp配置,将yorur_usernam.your_auth_pass.yoru_priva_pass替换你自己的设置 snmp-agent snmp-agent sys-info version v3 snmp-agent group v3 v3group privacy read-view v3view write-view v3view notify-view v3view sn