Welcome 微信登录

首页 / 操作系统 / Linux / Python 几种点积运算方式效率分析

本文列举出几种Python中常见的计算点积的方式,并统计随着向量维度的增大,各种方法的计算效率上的差异。运行环境:
  • CPU:Intel® Core™ i7-5930K @ 3.50GHz
  • Python: 2.7.6
代码:from itertools import izip, starmap, imapimport operatorimport numpy as npimport timer = range(10000)# method 1np.dot(r,r)# method 2sum(starmap(operator.mul, izip(r,r)))# method 3out = 0for k in range(len(r)):out += r[k] * r[k]# method 4sum(map(operator.mul,r,r))# method 5sum(imap(operator.mul,r,r))# method 6sum(i*j for i, j in zip(r, r))统计在不同向量维度:10, 100, 1000, 2000, 3000, 4000, 5000, 8000, 10000各运行三次:101. 0.000285 0.000188 0.0003092. 0.000117 6.3e-05 9.4e-053. 9.9e-05 6.1e-05 9.2e-054. 8.6e-05 4.4e-05 7.6e-055. 5.7e-05 4e-05 6.99999999999e-056. 9.3e-05 6e-05 8.29999999999e-051001. 0.000513 0.00052 0.0005042. 0.000169 0.000162 0.0001673. 0.000451 0.000311 0.0002884. 0.000137 0.000144 0.0001535. 0.000131 0.000138 0.0001416. 0.000224 0.000271 0.00021610001. 0.001683 0.001687 0.0016792. 0.000664 0.00065 0.0006613. 0.002238 0.002301 0.0025824. 0.000821 0.00089 0.000885. 0.000707 0.000928 0.0008226. 0.001958 0.001948 0.0019320001. 0.003138 0.00306 0.0031582. 0.001197 0.001089 0.0010753. 0.005211 0.004113 0.0043994. 0.001891 0.001826 0.0019535. 0.001415 0.001456 0.001736. 0.003595 0.003884 0.00428530001. 0.004468 0.004292 0.0045072. 0.001842 0.001727 0.0016373. 0.007802 0.007341 0.0068584. 0.002548 0.002274 0.00225. 0.002374 0.002348 0.0023356. 0.005697 0.005613 0.00566940001. 0.005946 0.005987 0.0059542. 0.002251 0.002102 0.0021893. 0.009069 0.010478 0.0092264. 0.003149 0.003699 0.0033635. 0.003032 0.003536 0.0031426. 0.012805 0.012598 0.01231650001. 0.007411 0.00731 0.0072342. 0.002744 0.002508 0.0025763. 0.012194 0.01231 0.0092164. 0.003953 0.003815 0.0039365. 0.00354 0.002698 0.0029486. 0.013849 0.012262 0.01512280001. 0.010604 0.011742 0.0116042. 0.004712 0.004703 0.0050373. 0.020271 0.014874 0.0204364. 0.007199 0.006417 0.0071935. 0.006887 0.006889 0.0068926. 0.021665 0.021659 0.021992100001. 0.01461 0.013028 0.0143072. 0.005814 0.005789 0.0058753. 0.023581 0.025064 0.0251164. 0.008041 0.008833 0.0088685. 0.007898 0.008619 0.0089256. 0.025248 0.02643 0.026212 
 取运行时间的均值,绘制成曲线图,可以看出,几种方法里,第2种方法的复杂度最小,随着向量维度的增加,时间消耗增加比较缓慢,而其他方法则相对较大。本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/136771.htm