出于性能原因替代 stdext::hash_map

2023-12-27

我正在开发一个高性能应用程序,其中所有调用都必须合理。我有一个地图,在每个事务开始时使用一次来进行我想改进的查找。地图在启动时加载,此后不会更改。

下图中的键是 std::string,但如果需要,它可以更改为 char 数组。 C 或 C++ 作为解决方案就可以了。

  typedef stdext::hash_map<std:string, int> symbols_t;

有谁知道任何其他解决方案可以消除查找或更快?

提前感谢您的帮助。

编辑的附加信息:
1. hash_map 目前有 350,000 个元素。
2. 每个键值的长度通常在 4 到 10 个字符之间。
3. 通过来自第三方 API 的回调接收信息。回调函数会被赋予一个符号,在进行地图查找时用作键值。软件的其余部分由映射查找返回的 int 驱动。

谢谢:感谢大家的意见。你给了我一些探索的途径。我一定会尝试这些。我很感激你的帮助。


该映射是完全恒定的还是在程序调用之间发生变化? 对于常量哈希(在编译时已知),有 gperf 程序,它可以生成快速且有保证的 O(1) 查找表。

此外,如果您告诉我们地图查找减慢代码速度的原因和具体方式,这可能有助于理解您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

出于性能原因替代 stdext::hash_map 的相关文章

  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • Mono 无法保存用户设置

    我在 Mono Ubuntu 上保存用户设置时遇到问题 这是代码示例 private void Form1 Load object sender EventArgs e string savedText Properties Setting
  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • std::bind 重载解析

    下面的代码工作正常 include
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 我应该在应用程序退出之前运行 Dispose 吗?

    我应该在应用程序退出之前运行 Dispose 吗 例如 我创建了许多对象 其中一些对象具有事件订阅 var myObject new MyClass myObject OnEvent OnEventHandle 例如 在我的工作中 我应该使
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • 使任务栏上的应用程序图标具有透明背景(UWA)

    我正在制作一个通用 Windows 应用程序 我希望任务栏上的应用程序图标具有透明背景 因此它不在彩色框中 很多微软自己的库存应用程序都是这样的 邮件 照片 Xbox 等 我知道它可以做到 因为我是偶然做到的 但我使用的图标太大 当我使用正
  • 使用 Terraform 的 Google Cloud 凭据

    这是一个新手问题 但我刚刚开始使用 Terraform Terragrunt 进行 GCP 配置 并且我发现获取 GCP 凭据的工作流程非常混乱 我以前只使用过 AWS 获取凭证并在 AWS CLI 中配置它们非常简单 基本上 Google
  • 将数据从 edittext 发送到 listview

    我创建了两个Activities MainActivity ListActivity 并在MainActivity 我有一个EditText和一个保存按钮 In ListActivity 我有一个ListView 我想保存写入的值 数据 字
  • 在 Sql Server 中存储 UInt32 的最佳方法

    我正在开发一个使用第三方组件的应用程序 该组件返回一个 UInt32 类型的值 我需要将此 UInt32 存储在 Sql Server 表中 我正在考虑只使用一个简单的 int 列并插入如下值 int value int cs int Ma
  • 阻止用户与底层视图的交互

    在我的应用程序中 我有一个覆盖视图 当发生某些处理和网络时会显示该视图 它只是一个半透明视图 UIView 的子类 上面有一个加载指示器 填充整个屏幕 我想阻止任何底层视图接收用户交互 例如 不应滚动底层表视图 不应按下按钮 我可以从叠加视
  • Zuul转发错误,负载均衡器没有可供客户端使用的服务器

    我正在尝试遵循本教程 Spring Boot 微服务与 Eureka 和 Zuul 代理与 Feign 客户端 https medium com iroshan du spring boot micro services with eure
  • css网格儿童比例过渡/动画

    我试图在点击 CSS 网格时缩放子元素的大小 但没有成功 问题是我实际上没有缩放它 我只是更改了列和行位置以填充所有网格 div width 100 height 140px display grid grid template colum
  • Kotlin Android:属性委托必须具有“getValue(DashViewModel, KProperty*>)”方法

    我正在尝试遵循 Kotlin 中 ViewModels 的官方 Android 指南 我直接复制粘贴最简单的官方示例 https developer android com topic libraries architecture view
  • SQLServerException:与主机的 TCP/IP 连接失败

    当我运行 Web 应用程序时 收到错误消息 与主机端口 1433 的 TCP IP 连接失败 错误 连接超时 验证连接属性 检查是否存在 SQL Server 实例正在主机上运行并接受 TCP IP 端口上的连接 并且没有防火墙阻止 TCP
  • 使 CSS 网格行高灵活

    我正在构建 CSS 网格布局 但不知怎的 我无法获得 自动 值来调整行高的大小 这些项目的最小高度保持为 1fr 即使它们的内容小到足以让它们收缩 这是一个解释问题的代码示例 您也可以在https codepen io 16kbit pen
  • Jenkins Slave - 如何添加或更新环境变量

    有没有人尝试过使用 Jenkins Rest API 或任何其他方式在 Jenkins 从配置中添加或更新环境变量 使用 Jenkins Swarm 插件 我创建了一个从站 它使用 JLNP 连接到 Jenkins 主站 但有环境变量 复选
  • CentOS 中尾部多个文件

    我想在 CentOS 中跟踪多个文件 并跟踪它们 我已经尝试过 tail f 文件1 文件2 文件3 但输出却很不友好 我也看过 multitail 但找不到 CentOS 版本 我还有什么其他选择 Multitail 可在 rpmforg
  • 使用方法后的 Java 结果不符合预期

    我有以下代码片段 class Phone String phoneNumber 123456789 void setNumber String phoneNumber phoneNumber 987654321 class TestPhon
  • 在我向 tabControl1 添加自定义背景色后,我的 tabControl1 将不会显示其 DrawImage

    我不太确定我哪里出了问题 但在我将自定义背景色添加到 tabControl1 之前 一切正常 我看到其他选项卡上的 X 和添加选项卡的 添加此代码源后 我添加的选项卡不在那里 但 按钮功能以及其他选项卡功能也让我认为 backColor 只
  • C#中使用DataContractJsonSerializer反序列化JSON对象

    我确信这个问题已经被问了一遍又一遍 但由于某种原因 我仍然无法让它发挥作用 我想反序列化包含单个成员的 JSON 对象 字符串数组 idTercero cod Tercero 这是我试图反序列化的类 DataContract public
  • FlatButton 翻译后 Flutter onPressed 不起作用

    我在使用时遇到了一些事件处理问题ScrollView and Transform 布局结构是这样的 ScrollView and Transform存在于里面Stack 我想要ScrollView滚动到范围之外时滚动FlatButton i
  • 在范围内找不到 WidgetCenter

    我正在为 iOS 10 构建一个 iOS 应用程序 该应用程序在调试配置中构建良好 但在发布中无法编译引用的 swift 源代码WidgetCenter 它输出错误Cannot find WidgetCenter in scope即使我正在
  • 核心数据原语访问器

    我对 Core Data 是否以 setPrimitiveAttributeName 的形式为 NSManagedObject 子类生成原始访问器 与 setPrimitiveValue forKey 的形式相比 这似乎是一致的 感到有点困
  • 隐式对象参数和 this 指针

    参考非静态成员函数 https en cppreference com w cpp language member functions under const 易失性和 ref 限定的成员函数 其中提到 可以在没有引用限定符的情况下声明非静
  • 出于性能原因替代 stdext::hash_map

    我正在开发一个高性能应用程序 其中所有调用都必须合理 我有一个地图 在每个事务开始时使用一次来进行我想改进的查找 地图在启动时加载 此后不会更改 下图中的键是 std string 但如果需要 它可以更改为 char 数组 C 或 C 作为