为什么 GoLang 中的文件加载一开始需要很长时间?然后需要最少的时间?

Shu*_*nne -3 caching memory-management file go

goProgram 是一个简单的实用程序,它在文件中搜索给定的字符串并得出 true/false

当尝试使用 data.log 时,第一次花费了大约 160 毫秒,后来大约花费了 20 毫秒

I:\Study\GO> .\goProgram.exe I:\data.log "BUILD SUCCESS"
true
Execution time : 156.4336ms

I:\Study\GO> .\goProgram.exe I:\data.log "BUILD SUCCESS"
true
Execution time : 19.1512ms

I:\Study\GO> .\goProgram.exe I:\data.log "BUILD SUCCESS"
true
Execution time : 19.5516ms

I:\Study\GO> .\goProgram.exe I:\data.log "BUILD SUCCESS"
true
Execution time : 18.5528ms
Run Code Online (Sandbox Code Playgroud)

当尝试使用 data1.log 时,第一次花费了大约 180 毫秒,后来大约花费了 20 毫秒

I:\Study\GO> .\goProgram.exe I:\data1.log "BUILD SUCCESS"
true
Execution time : 178.5104ms

I:\Study\GO> .\goProgram.exe I:\data1.log "BUILD SUCCESS"
true
Execution time : 17.5497ms

I:\Study\GO> .\goProgram.exe I:\data1.log "BUILD SUCCESS"
true
Execution time : 21.0613ms
Run Code Online (Sandbox Code Playgroud)

data.log 和 data1.log 大约为 24MB。

它会构建某种缓存吗?或者它对加载的文件进行一些索引?

Ste*_*ich 5

操作系统将从磁盘读取的数据缓存在内存中一段时间​​,这样重复访问相同的数据会更快。这对于任何类型的数据都是如此,即应用程序使用的数据以及应用程序及其库本身。这与所使用的特定程序或编程语言无关。