python比vb效率_一行代码让python的运行速度提高100倍,你信吗?

1、你知道 numba 吗?为啥numba库的jit模块那么牛掰?

Python 本身由于其动态语言的本质,并不适合于计算量很大的科学计算。然而 Numpy 提供的带类型的数据结构,以及预编译好的基于 C 或 Fortran 的高速计算库,很大程度上解决了这个问题。绝大部分基于 Python 的科学计算程序,都是将其数据储存在 ndarray 里的。按我自己目前的认识,Numpy 至少带来了两个方面的好处,一是存储的数据带有类型,Python 不再需要动态地猜测变量的数据类型;二是提供了一系列高速的 ufunc,可以快速地对大规模的数组进行运算操作。

Numpy 提供的 ndarray 以及 ufunc 在有些情况下是足够应付一些简单的计算逻辑的,比如 Palabos 官网提供的圆柱绕流的代码。按 Palabos 自己的说法,这个代码短得惊人,而且速度也非常快。

但是,总会有一些情况是用简单的数组没法完成的。至少有两种典型的情况。其一是沿时间的迭代,后一步依赖前一步的结果。即使每一个时间步中的计算量都不大,但所有的时间步不能或者很难做成一个简单的数组计算。另一种情况是确实是基于数组的计算,但计算逻辑比较复杂,没法用简单的数组算式来完成,比如 LBM 中的碰撞迁移如果有非规则障碍物就很难用数组简单表达了。

jit 的全称是 Just-in-time,在 numba 里面则特指 Just-in-time compilation(即时编译)。

2、Python你可能不了解,其它语言有类似功能的库或者组件吗?

JIT:Just In Time Compiler,一般翻译为即时编译器,这是是针对解释型语言而言的,而且并非虚拟机必须,是一种优化手段,Java的商用虚拟机HotSpot就有这种技术手段,Java虚拟机标准对JIT的存在没有作出任何规范,所以这是虚拟机实现的自定义优化技术。

HotSpot虚拟机的执行引擎在执行Java代码是可以采用【解释执行】和【编译执行】两种方式的,如果采用的是编译执行方式,那么就会使用到JIT,而解释执行就不会使用到JIT,所以,早期说Java是解释型语言,是没有任何问题的,而在拥有JIT的Java虚拟机环境下,说Java是解释型语言严格意义上已经不正确了。

HotSpot中的编译器是javac,他的工作是将源代码编译成字节码,这部分工作是完全独立的,完全不需要运行时参与,所以Java程序的编译是半独立的实现。有了字节码,就有解释器来进行解释执行,这是早期虚拟机的工作流程,后来,虚拟机会将执行频率高的方法或语句块通过JIT编译成本地机器码,提高了代码执行的效率,至此你已经了解了JIT在Java虚拟机中所处的地位和工作的主要内容。

3、它们提高性能的原理是什么?你还知道哪些提高性能的方法?

主要是预编译。很多啦,跟具体的语言相关,比如Python:

1-使用内建函数:

2-使用 join() 连接字符串.

3-使用Python多重赋值,交换变量

4-尽量使用局部变量

....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值