我做了一个简单的程序,在特定目录中搜索特定文件。
该程序的问题在于它第一次运行非常慢,但与您随后运行的第一次相比非常快。我正在粘贴相同的屏幕截图。我想知道,为什么会这样?我在 Windows 7 和 ubuntu 12.04 LTS 上都发现了同样的事情,但是速度差异(或时间差异在 Windows 7 上很大。
查看第二次和第三次搜索的时间差。第一次需要 81.136 秒,第二次需要 6.45 秒,尽管我们搜索的是同一个目录。
我做了一个简单的程序,在特定目录中搜索特定文件。
该程序的问题在于它第一次运行非常慢,但与您随后运行的第一次相比非常快。我正在粘贴相同的屏幕截图。我想知道,为什么会这样?我在 Windows 7 和 ubuntu 12.04 LTS 上都发现了同样的事情,但是速度差异(或时间差异在 Windows 7 上很大。
查看第二次和第三次搜索的时间差。第一次需要 81.136 秒,第二次需要 6.45 秒,尽管我们搜索的是同一个目录。
这与 Python 无关。扫描的文件仍将在操作系统的文件系统缓存中,因此不需要像第一次运行那样多的磁盘访问...
您可以使用以下内容进行复制:
with open('a 100mb or so file') as fin:
filedata = fin.read()
在第二次运行时,文件很可能仍在内存中而不是磁盘中,因此第二次运行会明显更快。
现代系统通过使用缓存机制来优化对最近访问的数据的访问。这可能就是您的情况。所以,这不是关于 Python,而是关于操作系统和存储。
这是在我的机器上连续执行的基本查找操作(与 Python 无关)的结果。
time find /usr/ -name java
...
real 1m15.946s
time find /usr/ -name java
...
real 0m24.577s