2010-03-10 103 views
2

我目前正在开发两个我的Django项目:与Linux相比,Django测试运行速度较慢吗?

  1. 的Mac OS X 10.5,32位
  2. Ubuntu服务器9.10 64位(1个CPU,512MB RAM)

两者的上述操作系统正在使用:

  1. 的Python 2.6.4
  2. 的Django 1.1.1
  3. MySQL 5.1中

运行我的应用程序采用一个12个测试:

  1. 的Mac:57.513s
  2. 的Linux:30.935s

编辑:

Mac硬件规格:

  • 的MacBook Pro
  • 2.2 GHz的英特尔Core 2 Duo
  • 3GB RAM

我上面相同的MAC通过的VMware Fusion 2.0.6运行Ubuntu的操作系统。

你可能会说Ubuntu Server 64位速度更快,但是我在Ubuntu 8.10 32位桌面版上观察到类似的速度差异。即使我关闭了我的linux虚拟机和其他mac应用程序,我仍然遇到了缓慢。是否有其他人在这两种操作系统上体验过这种Django测试速度差异?

找到了答案:

感谢来自istruble的评论和DZPM答案(我+1到你,因为我不能接受过期的奖金问题的答案) 。它看起来像在Mac上的MySQL数据库作为测试数据库导致性能问题。使用sqlite3进行测试可以在两个平台上比较测试运行时间。

+0

他们使用什么样的硬件运行速度较慢,或者是他们在同一台机器上都运行? – Skurmedel 2010-03-10 15:17:19

+0

是Mac OS X 32或64位? – Artyom 2010-03-10 15:18:29

+1

您是否试图通过使用sqlite3运行测试来排除数据库性能差异?或者通过在Mac上指向Ubuntunu上的数据库运行测试,反之亦然?此外,您的Mac上的用户和系统值是否也是大约两倍? – istruble 2010-03-21 02:52:09

回答

2

这取决于你的测试,但瓶颈应该在数据库中。你可以在两个平台上的基准MySQL 5.1

如果是这样,您应该在另一台机器上设置数据库,然后配置您的项目使用它。

+0

对于这个问题,你是否确定你的单元测试正在生产数据库上运行?默认情况下,它们在sqlite中运行。 – 2010-03-19 01:59:48

0

那么当你有OSX运行时什么其他运行?你有Ubuntu服务器,它通常被剥离到基本要素,针对桌面操作系统运行,这种操作系统为“用户体验”运行各种垃圾。我很惊讶它和你的数字显示一样。

在2个操作系统下真正比较同一个应用程序的唯一方法是确保两个操作系统的设置方式与您所测量的基本相同。

+0

这是一个开发机器,即使重新启动后,mac上的django测试仍然表现不佳。我只想知道其他同时使用这两种操作系统的人是否正在经历同样的缓慢。如果没有,那么我的Mac可能有问题。 – 2010-03-10 18:56:11

0

在OS X下,Python中的一些字符串操作在同一台机器上的VM上运行速度显着慢于在Ubunutu下运行。在你的shell试试这个,看看你拿出什么样的结果:

from timeit import Timer 
def sx(): 
    for i in range(10000): 
     s = "%d" % i 

min(Timer(stmt=sx).repeat(number=100, repeat=10)) 

使用Python 2.6.4在OS X 10.6.2和一个64位的Ubuntu(未知版本)使用内核版本2.6.31在VMware Fusion 2.0.6 VM中,只要Ubuntu测试,OS X测试需要1.4倍的时间。在Python 3.1下,OS X的表现会更好,它只需要少于1.1倍的时间。

这并不说明你的〜2倍的速度差异,但它确实表明,Python可以在OS X下

+0

如果这种事情导致他的Django测试缓慢,我会感到惊讶。一般来说,打到数据库的速度比这个要慢几个数量级。 – 2012-02-14 18:17:00

+0

@JonathanHartley不,python的速度差异并不能解释问题的不同之处,但它确实指出了一个可能的影响因素。这个答案的最后一行明确指出〜2x的速度差异不是由这个答案解释的。 – istruble 2012-02-14 18:54:39

+0

是的,但是运行测试所花费的时间只有一小部分花费在字符串操作上 - 比如说1/1000。大部分时间都花在文件系统或数据库访问上。因此,如果字符串操作在Mac上慢了1.4倍,那么这将导致Mac以1.0004的速度运行Ubuntu上的测试。 (DB和文件系统的东西为0.999,字符串操作为0.001 * 1.4)。因此,虽然这在技术上是有贡献的,但贡献如此之小,以至于引起注意力,这是积极的误导。 – 2012-02-15 11:47:53

相关问题