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