C/C++ Linux:最快写入一块固定的内存到文件(1 Hz)

kfm*_*e04 7 c c++ linux memory io

在Linux系统上,我有一个7MB大小的固定大小的内存(没有增长),其内容我在实时应用程序中刷新.

我需要每秒将这块内存写入磁盘(同一文件)一次.

考虑到现代(2011年末)的CPU和硬盘驱动器,实现此功能的最有效方法是什么?我不在乎写入是否需要一些时间,但由于这是一个实时应用程序,我需要尽快返回正在运行的应用程序.

我应该尝试哪些方法?

我的基线是标准基线fopen(),二进制fwrite(),fclose()循环.

我已经读过mmap()可能很有用.也许是异步I/O?还有其他我应该进行基准测试的方法吗?在您的头脑中,您认为哪种方法最快?

Ign*_*ams 9

mmap(2)是要走的路.只要打电话msync(2)MS_ASYNC当你想要写.

  • 你能引用这个来源吗?为什么`mmap`最快? (2认同)
  • 哈哈哈 - 我不得不抬头看看"frob" - 它把我改成了frobnicate(vvnice):[Poss.衍生自frobnitz,通常缩写为frob,但frobnicate被认为是官方的完整形式:]操纵或调整,调整.一个频繁的比特或其他2状态设备.因此:"请把灯开关擦掉"(也就是翻转它),还要"停止擦拭那个扣子; 你会打破它".人们也看到了建筑物以起皱纹.看到调整和旋转. (2认同)