今天突发奇想,想看看同一个Python 程序在Windows 下和在Linux下执行的速度有何差别。

于是我弄了一个极其简单的程序:计算圆周率(pi)的平方根10,000,000次,然后读取所用的时间:

  1. from __future__ import division  
  2. import time 
  3. import math 
  4. loops = 10000000  
  5. begin_time = time.time()  
  6.  
  7. for i in range(loops):  
  8.     a = math.sqrt(math.pi)  
  9.     i += 1  
  10.  
  11. finish_time = time.time()  
  12.  
  13. time_used = finish_time – begin_time  
  14.  
  15. print ‘Compute the square root of pi’  
  16. print ‘Time used for finishing’, loops,’loops’, time_used  
  17. print ‘Time per floatloop’, time_used / loops  
  18. print# float per second’, 1/(time_used / loops)  
  19.  
  20. dummy = raw_input(‘press Enter to exit’) 

由于手头没有合适的Linux系统,于是在Windows里面建了一个虚拟机(用VirtualBox),分配了100%的处理器核心和50%的内存。 Windows 下安装了官方的Python2.7,Ubuntu下使用自带的Python。两个系统都直接用命令行的方式运行。

按道理来说,如果两个系统效率一样的话,Windows下的速度会比Ubuntu快,因为虚拟机会有性能的损失。

 

image

 

结果,Windows下每秒运行的速度仅仅只有Ubuntu虚拟机下面的55.4%。可想而知,如果不用虚拟机,直接把Ubuntu安装在电脑上,那速度还会更快。看来,和Linux比起来,Windows下Python 的执行效率是非常低的,虽然小型的程序根本看不出差别来!

 

image

图1: 在不同平台下此Python程序每秒钟运行的循环数(测量3次取平均值)