python测速程序_python算法速度测试合集

这篇文章主要整理对同一个任务,不同的算法导致的速度的差别,不定期更新的,当然也会顺便扯扯淡。

昨日有同事认为我写的Center_Rank函数比MD的Rank函数要慢,这个问题我今天测试了一下。

关于列表解析,for循环,迭代器,map函数的速度测试比较:

返回的y_map和y_generator是迭代器,转换过程也很花时间。

既然这样我就只能使用终极大杀招:numba。

之前看到某top1学校量化协会会长在朋友圈晒出在wall street面试的题目,请看面试题第五题。多数人以为面试者在侮辱智商,实际上我猜题目的原本意义应该是想考察面试者,为什么要写这些函数,或者说这些函数在哪些情况下是非要这么写不可。原题应该是纯英文,这些题应该是作者自己翻译的。

很明显,如果翻译原英文题目内容没有缺省的话,第五题的难度跟前面几个题目的难度根本不在一个level上,但如果第五题如果问的是为什么要像C一样写python的话,这个题目的level就跟前几个题目一致了,我这里举例如下:

之前Yuze He同学问我pandas里面有没有类似于corrwith(计算两个形状相同的矩阵的对应行的相关系数)的,但计算的是方差的函数。

似乎没有找到这样的ufunc(universal function,一般比自定义的函数快很多),如果有人知道这种函数,麻烦告诉我。

所以我就为此问题写了一堆方法,其中有

0.for循环;

1.for循环加zip;

2.列表解析(list comprehension);

3.迭代器(generator);

4.map函数;

5.利用ufunc中的corrwith算相关系数,std算标准差,然后相乘;

6.保留numpy的向量运算风格用numba的jit(即时编译技术);

7.像C一样写python,同时使用numba的jit;

来看速度吧:

输出结果如下:

1.可以看到所有方法的计算结果都一样,也就是都完成了任务;

2.最快的是像C一样写python,丝毫不怕写for循环,但要使用numba.jit加速;这也就回答了面试题中为什么要那样写python了,因为对于使用numba.jit加速的代码,使用python的built-in的函数和类应该是最好的,而应当尽量不使用第三方库。

3. 而numba和C++谁更厉害,结论是numba跟优化过的C++一样厉害。原文链接如下:比较Python,Numpy,Numba和C ++进行矩阵乘法 - IT屋-程序员软件开发技术分享社区​www.it1352.com

pickle文件的读和写比csv要快很多,这里特地引用一下Edward Fu:问题五、各种OI的效率快慢问题?

1. npy读写效率最高,但最费硬盘空间,比如np.load(), np.save();

2. csv其次,比如pd.Dataframe.to_csv(),pd.load_csv();

3. txt读写,当然也可以很快,但是需要频繁的split,对格式规范的数据比较麻烦;

4. 至于简单的excel和word,可以用xlrd,xlwt来操作

作者:Edward.Fu

链接:https://zhuanlan.zhihu.com/p/21337237

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值