【问题标题】:Python Performance on WindowsWindows 上的 Python 性能
【发布时间】:2010-12-23 00:04:38
【问题描述】:

Python 在 Windows 上的速度通常比 *nix 机器慢吗? Python 似乎在我的 Mac OS X 机器上大放异彩,而它似乎 在我的 Window 的 Vista 机器上运行得更慢。这些机器的处理能力相似,vista 机器的内存增加了 1GB。

我在 Mercurial 中特别注意到这一点,但我认为这可能只是 Mercurial 在 Windows 上的打包方式。

【问题讨论】:

  • 由于卡巴斯基病毒扫描程序在程序运行时主动扫描程序,我遇到了 Python 运行缓慢的问题。然而,Mercurial 仍然全速运行。虽然它可能是用 python 编写的,但 Hg exe 不会被解释。

标签: python windows performance macos mercurial


【解决方案1】:

这里没有实际数字,但确实感觉 Windows 平台上的启动时间较慢。我经常在家里的 Ubuntu 和工作中的 Windows 7 之间切换,尽管我的工作机器的速度至少是 4 倍,但在 Ubuntu 上启动速度要快一个数量级。

至于运行时性能,“安静”的应用程序感觉差不多。如果在 Windows 上有任何使用 Tk 的 GUI 操作,它们肯定会更慢。 Windows 上的任何控制台应用程序都较慢,但这很可能是由于 Windows cmd 渲染速度比 python 运行速度慢。

【讨论】:

    【解决方案2】:

    也许python有更多的依赖很多文件打开(导入不同的模块)。

    Windows 处理文件打开的效率不如 Linux。

    或者 Linux 可能有更多依赖于 python 的实用程序,并且 python 脚本/模块更有可能被缓冲在系统缓存中。

    【讨论】:

      【解决方案3】:

      我在 Windows XP 和 7 以及我的 Macbook 上的 OSX 上本地运行 Python。我在命令行解释器中没有看到明显的性能差异,wx 小部件应用程序运行相同,Django 应用程序的性能也几乎相同。

      我在工作中注意到的一件事是卡巴斯基病毒扫描程序往往会降低 python 解释器的速度。 python 提示正确出现需要 3-5 秒,Django 的测试服务器需要 7-10 秒才能完全加载。正确禁用其主动扫描会使启动时间回到 0 秒。

      【讨论】:

      • 您可能正在使用病毒扫描程序。我的 Windows 机器上有扫描仪,但 OS X 机器上没有。我之前没想到。
      • 新的 Microsoft Security Essentials (MSE) 扫描程序远没有卡巴斯基和诺顿那么激进。在使用 Python(或任何编译器,就此而言)时,我运行它没有任何问题。
      【解决方案4】:

      使用操作系统和网络库,我可以确认 Windows 上的性能较慢,至少对于版本 =

      我编写了一个 CLI podcast-fetcher 脚本,该脚本在 Ubuntu 上运行良好,但在 XP 或 7 上下载的速度不会超过 80 kB/s(我通常的最大值约为 1.6 MB/s)。

      我可以通过调整下载流的缓冲区大小来部分纠正这个问题,但在 Windows 上肯定存在一个主要瓶颈,无论是通过网络还是 IO,这在 Linux 上根本不是问题。

      基于此,似乎系统和操作系统接口任务针对 *nixes 的优化比针对 Windows 的更好。

      【讨论】:

        【解决方案5】:

        我想跟进这件事,我发现了一些我认为是“我的答案”的东西。看来Windows(vista,我注意到这一点)在处理文件方面没有那么快。这是tony-p-lee提到的。

        我发现了Ubuntu vs Vista vs Win7 的比较。他们的结果很有趣,就像他们说的那样,您需要对结果持保留态度。但我认为结果将我引向了事业。 Python,我觉得是间接测试过的,在 Windows 上如果不是快一点的话,也差不多。请参阅“Richards 基准测试”部分。

        这是他们的文件传输图表:


        (来源:tuxradar.com

        我认为这特别有助于解决这个问题,因为 Hg 实际上只是一系列文件读取、复制和整体处理。这可能是造成延迟的原因。

        http://www.tuxradar.com/content/benchmarked-ubuntu-vs-vista-vs-windows-7

        【讨论】:

          【解决方案6】:

          有趣的是,我直接比较了 Windows 10 x64 机器(诚然低功耗)上的流行 Python 应用程序和在同一台机器上运行的 Ubuntu 14.04 VM。

          我没有测试加载速度等,但我只是在查看两者之间的处理器使用情况。为了使测试公平,两者都是全新安装,我复制了我的媒体库的一部分并在两种情况下应用了相同的配置。每个测试都是独立运行的。

          • 在 Windows 上,Python 使用了我 20% 的处理器能力,它触发系统压缩内存以 40% 运行(这是一台具有 6GB 或 RAM 的旧机器)。
          • 使用 Ubuntu 上的虚拟机(链接到我的 windows 文件系统),处理器使用率约为 5%,压缩内存降至 20% 左右。

          这是一个巨大的差异。我运行这个测试的触发因素是使用 python 的应用程序正在运行我的 CPU 高达 100% 并且无法运行。我现在已经在 VM 中运行了 2 周,我的处理器使用率平均下降到 65-70%。因此,在长期和短期测试中,考虑到运行 VM 和第二个操作系统的开销,这个 Python 应用程序在 Linux 上的速度明显更快。我还可以确认 Python 应用程序响应更好,就像我机器上的其他所有东西一样。

          现在这可能是非常特定于应用程序的,但它至少是有趣的。

          PC 是旧的 AMD II X2 X265 处理器,6GB RAM,SSD HD(Python 运行时使用的,但 VM 使用常规的 5200rpm HD,用于大量其他工作,包括录制 2 个闭路电视摄像机)。

          【讨论】:

            猜你喜欢
            • 2011-01-28
            • 2017-01-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-28
            • 1970-01-01
            • 2012-11-13
            • 2011-09-10
            相关资源
            最近更新 更多