我在Python中实现了Dijkstra's algorithm并在Ubuntu和windows 8下运行了脚本。两者都是x64架构。
我使用python -m cProfile name.py
我很惊讶地看到,与Windows相比,该程序在Ubuntu中占用了一半的时间。
Ubuntu运行时间为1000 x 1000矩阵:0.4 sec
Windows运行时间为1000 x 1000矩阵= 1.2 sec
这是一台双启动机器。
这是怎么回事?
答案 0 :(得分:0)
首先 - 显而易见的是,尽管python的版本可能相同,但它们已经使用不同的编译器进行编译,这自然意味着优化级别完全不同。你可以使用gcc为两个系统重新编译python,然后重新运行整个事件。但是,只有当您确定自己在做什么时,我才会建议您这样做。更具体地说是针对linux的,因为许多运行的进程在很大程度上依赖于python。看一下this讨论。
其次 - 窗口自然占用了比linux更多的资源,开箱即用的窗口启动了更多的进程,每个进程通常都是无限循环,占用资源。
基于操作系统比较性能是一个错误的概念。这基本上就像比较苹果和橙子。每个系统都有不同的方式来管理它的内存和运行过程。文件系统是另一个非常重要的部分 - 因为python在大多数情况下是解释语言,每个导入都执行磁盘操作。
答案 1 :(得分:0)
实际上,在我的机器中有一些原因导致Python性能下降。但是,我没有与我有统计数据,因此我没有证据。您可能还需要检查它们(还有一小撮盐; - ))。
然而,这些可能仍然无法帮助您达到Linux之类的性能。主要原因是两个python都可能由不同的c编译器编译。 libc也可能正在运行。