gpt4 book ai didi

c++ - 将 32 位整数存储到磁盘的绝对最快方法?

转载 作者:太空狗 更新时间:2023-10-29 23:29:00 24 4
gpt4 key购买 nike

我有一个对延迟非常敏感的例程,它按顺序生成整数,但需要将最后生成的整数存储到磁盘以防崩溃或重新启动。

目前,我正在寻找文件的开头,然后写出整数,然后在每次生成新的 int 时刷新。刷新是必需的,因此写入至少会命中电池支持的 Controller 缓存。

查找的成本非常高,所以我考虑只附加 4 个字节,如果需要恢复,则查找到最后并读取最后 4 个字节。前面的陈述显然假设没有太多其他磁盘事件发生,因此写入磁头理想情况下应位于文件末尾。

这个数字通常不会超过 10,000,000,所以 40MB 还不错。

关于如何在不牺牲完整性的情况下实现最小延迟的任何建议?

Linux 2.6+ 上的 C 或 C++

最佳答案

我认为最快/最简单的方法是使用 mmap/msync——将文件的第 1 页 mmap 到内存中并将值存储在该页上。任何时候值更改,调用 msync(2) 强制页面返回磁盘。这样每个商店只需要一个系统调用

关于c++ - 将 32 位整数存储到磁盘的绝对最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4811427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com