首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C write()时间不一致

问C write()时间不一致
EN

Stack Overflow用户
提问于 2020-08-07 18:15:58
回答 1查看 56关注 0票数 0

我写了一个小程序来测量Linux中c write()函数的运行时间。令我惊讶的是,在多次迭代中,时间并不一致。我已经看到,第一次写入所需的时间比紧接着的连续写入要长得多。这种模式在多个运行/文件大小-缓冲区大小组合上继续。

下面是代码:https://drive.google.com/file/d/1akwUz9mykkp0kk-FID9jxPClwJMD7uRI/view?usp=sharing

以下是部分输出:

it:0.051文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.051秒:毫秒

it:1文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.027秒:毫秒

it:2文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.022秒:毫秒

it:3文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.021秒:毫秒

it:4文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.021秒:毫秒

it:5文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.021秒:毫秒

it:6文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.022秒:毫秒

it:7文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.022秒:毫秒

it:8文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.021秒:毫秒

it:9文件大小:4.00MB缓冲区大小:1.00KB写入时间:0.021秒:毫秒

注意它是如何写函数调用的:0几乎是连续调用的两倍。这种模式不断重复。这可能与linux页面缓存有关,但我不知道它到底是如何进行的。帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-08-07 18:30:42

这与处理器的缓存体系结构有关。在程序的第一次迭代期间,存储在硬盘或SSD内存中的文件将被移动到缓存中,以便进行处理,随着文件大小的增加,这需要更多的时间。当程序再次需要相同的文件时,它将简单地使用存储在缓存中的文件,跳过到主存的旅程。这造成了第一次迭代和其余迭代之间的写入时间差。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63299756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档