LevelDB 与 std::map

2023-12-27

在我们的应用程序中我们使用std::map存储(键,值)数据并使用序列化将该数据存储在磁盘上。通过这种方法,我们发现磁盘 I/O 是性能瓶颈,并且使用 key 查找值并不是很快。

我遇到过 LevelDB 并考虑使用它。但我有一些问题。

  1. LevelDB 的文档说它是为(字符串,字符串)键值对而设计的。这是否意味着我不能用于自定义键值对?
  2. 看来之间的区别std::map而LevelDB是LevelDB是持久化的并且std::map在内存中工作。那么这是否意味着磁盘I/O瓶颈对于levelDB来说会更加成问题。

更具体地说,任何人都可以解释一下 LevelDB 是否是比std::map?

PS:我尝试使用hash_maps 但它似乎比std::map


LevelDB 只是做 std::map 以外的事情。

您真的是说您想要 std::map 的(高性能)持久性吗?

  • 使用自定义分配器查看 std::map 。从内存映射区域分配条目并使用 fsync 以确保信息在关键时刻及时到达磁盘。

    • mmap http://linux.die.net/man/2/mmap
    • boost iostreams 内存映射文件 http://www.boost.org/doc/libs/1_47_0/libs/iostreams/doc/classes/mapped_file.html
  • 也许将其与 EASTL 结合起来(它拥有更快的 std::map 并通过自定义分配器蓬勃发展 - 事实上它们没有默认分配器)

    • EASTL https://github.com/paulhodge/EASTL
  • 看看调整你的 hash_map (std::unorderded_map);如果 hash_maps 较慢,您应该考虑 (a) 负载因子 (b) 哈希函数调整

    • docs http://msdn.microsoft.com/en-us/library/bb982704.aspx
  • 最后但并非最不重要的一点:评估 Boost Serialization 对映射的二进制序列化的使用(无论您选择什么实现)。根据我的经验,提升序列化性能是最重要的。

    • 增强序列化 http://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/tutorial.html#stl
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LevelDB 与 std::map 的相关文章

  • 添加 Nullable int 时保持 null?

    我想添加可为空的int 并保留null当所有值都是null 我想要这个结果 1 2 3 1 null 1 null null null O null 0 问题是 如果我将一个值与 null 相加 结果为 null int i1 1 int
  • json.net自定义jobject反序列化

    我正在尝试使用 JsonConvert DeserializeObject string 将字符串反序列化为可与动态一起使用的 jobject 来动态访问 json 文档 但是我想避免知道文档的大小写 以便我可以输入 dynamic doc
  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • 运行需要 MySql.Data 的内置 .NET 应用程序

    我在运行我编写的内置 NET 应用程序时遇到问题 我的应用程序使用最新的 MySql 连接器 该连接器安装在我的系统上 当我尝试将其添加为引用时 该连接器显示为 NET 4 Framwork 组件 当我在环境中以调试模式运行应用程序时 一切
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • 匹配一个“.”在java中[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有下面的
  • 我可以在 Android 设备上存储数据以在安装之间保留吗?

    我想以在应用程序安装之间保留少量数据的方式存储少量数据 我显然无法使用 SharedPreferences 因为它们在卸载时会被删除 有没有什么方法可以存储数据 以便在重新安装应用程序后数据仍然存在 我想要存储的数据是一个唯一的 ID 以便
  • PHP 安全性:将 POST 发送到相同的 URL = 不好?

    昨天我收到了有关将 POST 数据发送到同一页面的问题的回复重定向后获取模式 http en wikipedia org wiki Post Redirect Get像这样 if isset POST Submit prevent rese
  • WPF 窗口背景 ImageBrush 不平铺

    我有一个带有背景图像的窗口 图像可能会在运行时发生变化 这对此并不重要 我希望图像固定在左上角 确实如此 而不是缩放 这也是正确的 但是当窗口大于图像时 我需要重复 平铺 图像 我正在做 我缺少什么 TIA 您需要设置TileMode ht
  • Xerces C++ - 加载、读取和保存,替代方案?

    我正在寻找一个教程来加载 XML 文件 读取它 更改它并最终使用 C 保存它 我正在使用 Linux Ubuntu 并尝试使用 Xerces 通过 Google 和很多时间 我只能加载一个 XML 文件 include
  • 查找 postgres jsonb 数组中对象的位置

    我在 jsonb 中有一个看起来像这样的对象数组value表的列 west id aa92f346 7a93 4443 949b 4eab0badd983 version 1 id cd92e346 6b04 3456 050a 5eeb0
  • 如何确保日志永久保留在Kafka中?

    我需要配置Kafkanever删除日志 查看他们的文档 我看到两种控制此操作的参数 日志清理器 描述于http kafka apache org documentation html compaction http kafka apache
  • 通过 Webpack 5 模块联合提供样式和资源

    我已经在我的 Angular 11 应用程序中成功实现了相对较新的 webpack 5 模块联合系统 因此它可以从另一个版本按需远程加载模块 我一无所获的一件事是如何处理样式表和图像等资源 例如 联合模块中有一个菜单元素需要自己的样式 将它
  • 反序列化为 JObject 时获取类型名称

    使用 Deserialize 时有没有办法获取 type 属性 我在打开 TypeNameHandling 的情况下进行序列化 但是当我反序列化时 我没有包含类型信息的程序集 我需要使用类型名称将其存储在正确的集合中 看起来 type 没有
  • IIS 8.5 服务 dll 用于下载而不是执行

    问题 当我访问 32位 DLL通过 URL 类似http localhost somepath some dll action http localhost somepath some dll actionIIS总是认为我想下载文件 文件大
  • 枚举声明中不必要的逗号[重复]

    这个问题在这里已经有答案了 可能的重复 NET 枚举允许在最后一个字段中使用逗号 https stackoverflow com questions 2147333 net enumeration allows comma in the l
  • 更改表所有者

    我正在尝试更改表的所有者 sp changeobjectowner OWNER TABLENAME dbo 但是执行时我收到错误消息 消息 15001 级别 16 状态 1 过程 sp changeobjectowner 第 62 行对象
  • 调试 KML 文件

  • 浮点和定点表示的优缺点[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在过去的三天里 我一直在尝试理解浮点表示和定点表示之间的确切区别 我在阅读这些材料时感到困惑 无法确定什么是对的 什么是错的 问题之一
  • 将查询结果传递到存储过程

    我有一个接受三个参数的存储过程 是否可以使用查询作为输入来调用此存储过程 举个例子 我有tableA SELECT FROM TABLEA A B C 1 2 3 4 5 6 现在 有什么方法可以调用 EXEC sp name SELECT
  • 2D瓦片地图生成

    对于 2D 图块引擎 我正在研究地图生成算法 我尝试了高度图生成 山地一代 柏林噪声 菱形方形 适合具有高度组件的图块地图 但我有草 海 沙漠等精灵 它们的放置方式应如下所示 一切都从海洋开始 岛屿被放置在地图的中间 这是我尝试的算法大多失
  • 如何从随机网页中抓取文本和图像?

    我需要一种方法来直观地表示互联网上的随机网页 比如说this https www reddit com r food comments 85rm0d homemade chocolate banana bread with nuts 网页
  • 如何存储历史数据[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我和一些同事就存储历史数据的最佳方式进行了争论 目前 对于某些系统 我使用单独的表来存储历史数据 并为当前活动记录保留原始表 所以 假设我有
  • 如何在android中的后者边界内打开另一个应用程序内的应用程序?

    如何在android中的后者边界内打开另一个应用程序内的应用程序 即 类似于 HTML 中的 iframe 的作用 你基本上不能 这违反了Android的规则 您最多能做的就是打开一个网页作为应用程序的一部分 这是使用 webView 完成
  • LevelDB 与 std::map

    在我们的应用程序中我们使用std map存储 键 值 数据并使用序列化将该数据存储在磁盘上 通过这种方法 我们发现磁盘 I O 是性能瓶颈 并且使用 key 查找值并不是很快 我遇到过 LevelDB 并考虑使用它 但我有一些问题 Leve