c++ - 保留硬盘中数据的物理地址

标签 c++ performance file filesystems hard-drive

是否可以将一个放在硬盘或固态硬盘中的数据地址保存在RAM中的容器中?

对于我的应用程序 (C++/visual studio 2008),我将在 SSD 驱动器上创建一个存储库(目录),在该存储库中将有数千个(比如说 100000 个文件,每个文件大小约为 3 MB)二进制文件(文件名是唯一标识)

某些应用程序必须使用名称 (Id) 对 tihs 目录执行搜索操作。

所以我想,如果我在 RAM 中创建一个类似 map 的容器,并将键列 ID(文件名)和值设置为文件的物理地址(在 SSD 中),然后让应用程序在此映射(在 RAM 中)中执行搜索,如果找到数据,使用地址检索数据(因为我们有物理地址)不会更快吗?

那么有没有可能做这样的事情呢?

最佳答案

有几个简单的选择:使用数据库,或内存映射一堆文件。在后一种情况下,您必须意识到表面上的内存操作实际上是磁盘 I/O,而且速度要慢得多。但是内存映射文件的结果仍然是指向其内容的相当普通的指针。这比您提议的“物理地址”更容易。

关于c++ - 保留硬盘中数据的物理地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424688/

相关文章:

performance - 我什么时候应该考虑函数调用对性能的影响?

asp.net-mvc - 无法使用formdata Asp.net-mvc上传图片

c++ - size_t 总是无符号的吗?

c++ - linux中管道之间的通信

c++ - 如何将响应式 Qt GUI 与基于 OpenMP 的计算库相结合?

c++ - g++ 对 -Ofast 做了哪些额外的优化?

c++ - 带 bo​​ost::hana 的 SFINAE 模板构造函数

sql-server-2005 - SQL Server 缓存问题

shell - 如何通过管道输出需要文件参数的命令

node.js - Nodejs从数据中读取文件并创建对象