我写了一个小程序来测量 Linux 中 c write() 函数的时间。令我惊讶的是,时间在多次迭代中并不一致。我已经看到第一次写入比立即连续写入花费的时间要长得多。该模式在多次运行/文件大小 - 缓冲区大小组合中继续存在。
这是代码: https ://drive.google.com/file/d/1akwUz9mykkp0kk-FID9jxPClwJMD7uRI/view?usp=sharing
这是部分输出:
它:0 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.051 S:MS
它:1 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.027 S:MS
它:2 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.022 S:MS
它:3 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.021 S:MS
它:4 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.021 S:MS
它:5 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.021 S:MS
它:6 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.022 S:MS
它:7 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.022 S:MS
它:8 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.021 S:MS
它:9 文件大小:4.00MB 缓冲区大小:1.00KB 写入时间:0.021 S:MS
注意 write function call on it:0 几乎是连续调用的两倍。这种模式不断重复。它可能与 linux 页面缓存有关,但我不知道它到底是如何发挥作用的。帮助!