7

我做了一个简单的程序,在特定目录中搜​​索特定文件。
该程序的问题在于它第一次运行非常慢,但与您随后运行的第一次相比非常快。我正在粘贴相同的屏幕截图。我想知道,为什么会这样?我在 Windows 7 和 ubuntu 12.04 LTS 上都发现了同样的事情,但是速度差异(或时间差异在 Windows 7 上很大。在此处输入图像描述

查看第二次和第三次搜索的时间差。第一次需要 81.136 秒,第二次需要 6.45 秒,尽管我们搜索的是同一个目录。

4

2 回答 2

10

这与 Python 无关。扫描的文件仍将在操作系统的文件系统缓存中,因此不需要像第一次运行那样多的磁盘访问...

您可以使用以下内容进行复制:

with open('a 100mb or so file') as fin:
    filedata = fin.read()

在第二次运行时,文件很可能仍在内存中而不是磁盘中,因此第二次运行会明显更快。

于 2013-10-30T14:04:45.397 回答
7

现代系统通过使用缓存机制来优化对最近访问的数据的访问。这可能就是您的情况。所以,这不是关于 Python,而是关于操作系统和存储。

这是在我的机器上连续执行的基本查找操作(与 Python 无关)的结果。

time find /usr/ -name java
...
real    1m15.946s

time find /usr/ -name java
...
real    0m24.577s
于 2013-10-30T14:11:11.860 回答