相关疑难解决方法(0)

为什么fwrite libc函数比syscall写函数更快?

提供相同的程序,该程序读取随机生成的输入文件并回显相同的字符串,然后将其读取到输出.唯一的区别是,在一边,我提供的读取和写入从Linux系统调用的方法,并在另一边我用FREAD/FWRITE.

使用大小为10Mb的输入来定时我的应用程序并将其回显到/ dev/null,并确保文件没有被缓存,我发现当使用非常小的缓冲区时,libc的fwrite速度更快(1个字节)案件).

这是我的时间输出,使用fwrite:

real    0m0.948s
user    0m0.780s
sys     0m0.012s
Run Code Online (Sandbox Code Playgroud)

并使用syscall写:

real    0m8.607s
user    0m0.972s
sys     0m7.624s
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一可能性是内部libc已经缓冲了我的输入......不幸的是我无法在网络上找到那么多信息,所以也许这里的大师可以帮助我.

c linux

22
推荐指数
3
解决办法
2万
查看次数

标签 统计

c ×1

linux ×1