加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

为什么Julia比Python快?因为天生理念就更先进啊

发布时间:2019-02-27 05:53:42 所属栏目:建站 来源:机器之心编译
导读:副标题#e# 其实像以前 C 或其它主流语言在使用变量前先要声明变量的具体类型,而 Python 并不需要,赋值什么数据,变量就是什么类型。然而没想到正是这种类型稳定性,让 Julia 相比 Python 有更好的性能。 选择 Julia 的最主要原因:要比其他脚本语言快得多

output::

  1. 3-element Array{Any,1}: 
  2.  1.0        
  3.  "hi!"     
  4.  :Symbolic 

抽象类型的一种不太极端的形式是 Union 类型,例如:

  1. a = Vector{Union{Float64,Int}}(undef,3) 
  2. a[1] = 1.0 
  3. a[2] = 3 
  4. a[3] = 1/4 

output:

  1. 3-element Array{Union{Float64, Int64},1}: 
  2. 1.0  
  3. 3    
  4. 0.25 

该案例只接受浮点型和整型数值,然而它仍然是一种抽象类型。一般在抽象类型上调用函数并不能知道任何元素的具体类型,例如在以上案例中每一个元素可能是浮点型或整型。因此通过多重分派实现优化,编译器并不能知道每一步的类型。因为不能完全优化,Julia 语言和其它脚本语言一样都会放慢速度。

这就是高性能原则:尽可能使用严格的类型。遵守这个原则还有其它优势:一个严格的类型 Vector{Float64} 实际上与 C/Fortran 是字节兼容的(byte-compatible),因此它无需转换就能直接用于 C/Fortran 程序。

高性能的成本

很明显 Julia 语言做出了很明智的设计决策,因而在成为脚本语言的同时实现它的性能目标。然而,它到底损失了些什么?下一节将展示一些由该设计决策而产生的 Julia 特性,以及 Julia 语言各处的一些解决工具。

1. 可选的性能

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读