原文地址:

https://blog.csdn.net/seekiu/article/details/47397067

随着  Julia 1.0版本的推出,人工智能圈子比较炸锅, 好像这门小众语言要赶超Python了, 作为现在编程领域的大佬,Python最被人诟病的就是运算性能,恰巧 Julia 是已高性能并行计算为主打,并且兼顾了语法简洁和动态性,好奇之下找了找网上的相关资料,发现确实是太小众了,最后发现了下面这篇文章,觉得有些用处。

以下为原文内容:

上一篇博文中推荐了 Python 的 JIT 编译器 numba,这两天又用空余的时间尝试了一下最近的一个新兴语言 Julia。Julia 的目标设定得很高,未来是要成为一个速度上接近甚至超过 Fortran/C 这样的传统语言的通用编程语言。然而就我这两天很初步的尝试结果看来,它也许有这个能力,但至少目前,对工程计算的人来说,还没有达到 production-ready 的程度。(当然,这只是基于我个人的编程经验和需求的结论,很可能不适用于其他人。而且Julia本身是一门相对年轻的语言,很值得持续关注。)

之所以这样说,有三个方面的理由:

  1. 作为一个动态语言,它的 JIT 编译器(在很多情况下)还没有智能到,让我可以同时享受动态语言的便利和它的速度优势。例如最近我在试用 Julia 时最先尝试的就是把原来用 Numba 写的函数重写一遍,然而发现结果非常不好。Julia 版本的函数执行速度相当于纯 Python 的速度,与 Numba 版本相差三个数量级,占用的内存也异常地大。后来发现,最主要的原因是三层嵌套循环中,循环长度我按 Python 的习惯定义为变量,而在 Julia 中不变的全局量最好声明为常量。仅仅这个修改,让速度提升了两个数量级,但还不及 numba 的速度。进一步的测试还可以通过一些细小的地方来进一步提升速度,如这篇文章做的那样,最终高度优化之后速度也许可以达到接近 Fortran。但是,如果要这样做,为什么不干脆用 Fortran 呢?相比之下,numba 的可用性就要高太多了。不过毕竟它现在的稳定版本还是0.3.10,还需要再给它一点时间发展成熟。

  2. 作为一个新兴、小众的语言,相关的工具链还太弱了。没有合格的 IDE,Juno 在我看来现在连半成品都还算不上。包管理似乎是用的 Git,有时会出一些奇怪的问题,这时候用 Pkg 倒还不如手动去管理。调试程序也比较痛苦,一方面是很多错误信息跟没给差不多,像我这种不熟悉的人基本只能用 print 一半一半地查,另一方面是相关的调试工具也还不够好用。

  3. 文档、相关信息还太少。已经有不少人开始使用 Julia,但网上公开的信息中,官方的文档还比较简陋,其他用户贴出的博客也很少。这导致在遇到问题的时候,很难快速地难过 Google 直接得到问题的答案,而往往需要在社区中等待圈内人士的解答。

另外一个对 Julia 印象不太好的是,官网给出的 benchmark 没有多少参考价值,至少其结果中 Python 和 Matlab 都很有问题,多半是单纯地逐行翻译出来的程序。这就跟我把 numba 的程序直接翻译成 Julia,然后得出结论它很慢一样,是不公平的比较。

不管怎么样,Julia 目前看来还是值得持续关注的,但是目前,我还不会考虑把它作为主要的计算语言。

初试 Julia 语言 (转)的更多相关文章

  1. Julia语言:让高性能科学计算人人可用

    Julia语言:让高性能科学计算人人可用要:一群科学家对现有计算工具感到不满:他们想要一套开源系统,有C的快速,Ruby的动态,Python的通用,R般在统计分析上得心应手,Perl的处理字符串处理, ...

  2. Julia语言程序基础

    Julia-lang 新兴的Julia语言,Julia 一开始就是为高性能而设计的. Julia 程序通过 LLVM 编译成高效的多平台机器码. Julia中文社区: https://cn.julia ...

  3. Julia语言介绍

    官网:https://julialang.org/ 中文社区:https://cn.julialang.org/ Julia 是一个面向科学计算的高性能动态高级程序设计语言. 首先定位是通用编程语言, ...

  4. Julia 语言的一些尝试

    前些天发现了Julia 这门编程语言后便决定对其进行一些尝试,便写了下面的小程序,也算是看看这门语言所谓的速度快到底是怎么快法. 整数累加: x= function fff() : global x ...

  5. 小题精炼-----初试C语言

    毫无疑问, 这个又是给新入门学C语言的小鲜肉准备的! 题解: 1. 直接两个循环就ok啦! 当初讲课的时候几乎讲过原题啦. 2. 直接 100的三次方就是1000000啦, 所以直接对某数的三次方开方 ...

  6. Julia 语言

    同时安装多个库 Pkg.add.(["IJulia", "Combinatorics", "Plots", "TaylorSeri ...

  7. 《C Primer Plus》- 第一章 初试C语言

    本笔记写于2020年1月25日. 从今天开始,我要全面的.彻底的将未来计划中所有的知识重新规划学习一遍,并整理成一套全面的笔记体系.为我将来的职业打下坚实的基础.而所有的一切从C语言开始. 本系列文章 ...

  8. 在天河二号上对比Julia,Python和R语言

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

  9. AdaBoost对实际数据分类的Julia实现

    写在前面 AdaBoost是机器学习领域一个很重要很流行的算法,而Julia是一门新兴的发展迅速的科学计算语言.本文将从一个实际例子出发,展示如何用Julia语言实现AdaBoost算法. 什么是Ad ...

随机推荐

  1. pxc wsrep_sst_method均配置为xtrabackup-v2报错

    启动第二节点报错:WSREP_SST: [ERROR] Error while getting data from donor node: exit codes: 137 0 本来所有节点的wsrep ...

  2. python开发之路目录

    Python 目录 基础 python入门 python数据类型.字符编码.文件处理 python函数基础 python函数进阶 python装饰器函数 python装饰器函数 python递归函数 ...

  3. C# Winform backgroundWorker组件使用

    BackgroundWorker 组件用来执行诸如数据库事务.文件下载等耗时的异步操作. 开始 在应用程序中添加一个BackgroundWorker实例,如果用的是VS,可以从工具上直接拖到应用程序: ...

  4. html编码常见的有utf-8和gb2312编码等,应该如何判断选择?

    html如何选择编码,常见utf-8和gb2312编码如何判断选择 一.首先了解目前国内中文网页常用编码是utf-8 还是gb2313. 比如: 百度搜索 网页使用utf-8 腾讯新闻 网页使用utf ...

  5. ubuntu16.04(liunx) 离线安装 xgboost (anaconda3,anaconda2共存)

    服务器ubuntu 系统同时安装了 anaconda3,anaconda2 ,但服务器没有连接外网,所以 想在python3 环境下安装离线安装xgboost. 主要分2步: 0:进入py3环境  ( ...

  6. json反序列化快捷实体类

    有时候我们反序列化一个json串只为了提取里面的数据,而且json串的层级结构可能会比较复杂,定义对应的实体类会多而杂,有时还不一定能达到想要的效果. 则可以关注下以下两个类: java :      ...

  7. PHP Fatal error: Uncaught Error: Call to undefined function pcntl_fork().. 开启php pcntl扩展实现多进程

    在使用函数pcntl_fork()时报错  Fatal error: Uncaught Error: Call to undefined function pcntl_fork()....,原因是没有 ...

  8. 2017-2018-1 JaWorld 第四、五周作业

    2017-2018-1 JaWorld 第四.五周作业 两周工作内容 小组讨论并确定最终的app雏形 合作完成需求说明书 工作分工 成员 分工 比例 陈是奇 1.引言 8% 马平川 2.1-2.5 产 ...

  9. ZOJ 2747 Paint the Wall(离散化+暴力)题解

    题意:给你一个面,然后涂颜色,问你最后剩多少颜色,每种颜色面积. 思路:第一反应是二维线段树,代码又臭又长,可以做.但是这题暴力+离散化就可以过.可以看到他给的n只有100,也就是说最坏情况下会涂10 ...

  10. supervisor安装与问题

    [转]安装supervisor以及可能碰到的问题 单击此处查看原文 supervisor作为一个进程管理的python软件非常的给力 但是一不小心就会遇到一些问题 就比如下面这个: unix:///v ...