提供相同的程序,该程序读取随机生成的输入文件并回显相同的字符串,然后将其读取到输出.唯一的区别是,在一边,我提供的读取和写入从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已经缓冲了我的输入......不幸的是我无法在网络上找到那么多信息,所以也许这里的大师可以帮助我.