std::类似向量的类经过优化以容纳少量项目[重复]

2024-05-14

在程序的一个时间关键部分中,有一个类成员如下所示: std::vector m_vLinks; 在分析过程中,我注意到该向量大约 99.98% 的执行仅包含 0 或 1 个项目。 然而,在极少数情况下,它可能会容纳更多。 根据分析器,这个向量绝对是一个瓶颈,所以我正在考虑以下优化:

  1. 使用类似矢量的界面制作一个手工制作的类
  2. 此类将保存真实大小、一项和指向向量的可选指针
  3. 在这种情况下,当向量保存 1 个项目时,不会有任何动态内存分配,并且由于删除了一个间接寻址,访问该项目也会(稍微)快一些。
  4. 当我们需要保存更多数据时向量是动态分配的
  5. 当然,这个向量不会提供一个存储所有项目的内存块(这里不需要),而且一些操作会更复杂

在开始对这个东西进行原型设计以查看它是否有帮助之前,我想知道是否有人在某些第三方库中遇到过具有类似功能的自定义容器?

我已经考虑过 boost::array,但不希望它施加大小限制


LLVM 有一个类叫做小向量 http://llvm.org/docs/doxygen/html/classllvm_1_1SmallVector.html.

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

std::类似向量的类经过优化以容纳少量项目[重复] 的相关文章

随机推荐

  • IE 中的 Javascript 第 1 行语法错误 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有人能找出这个第 1 行语法错误是什么吗 我正在尝试在 IE6 和 IE7 中进行调试 但找不到问题的根源 http ci elfster
  • WF 和分层状态机

    搜索 bing 和 google 我发现了一些关于与 Windows 工作流程相关的状态图的信息 但令人惊讶的是很少 我得出的唯一明确的答案是 是的 它可以处理状态图 这里有一个教程 但我想确定的是 Does it support hier
  • 循环中的knitr模板和子文档

    圣诞节前我之前问过跨多个 knitr 文档的单一样式表 https stackoverflow com questions 20370584 single style sheet across multiple knitr document
  • 使用 R 读取和转换二进制原始数据

    我有一个file https drive google com file d 0BxMpk0nhnJy6SFhxd2xuMzJYYlk edit usp sharing其中包含原始 二进制数据和 ascii 它包含一个时间戳和一个代表速度的
  • 如何使用特定版本的NPM?

    如何切换我正在使用的 npm 版本 现在 npm v 1 1 65 但我需要 1 0 x 我尝试过 但出现错误 npm version 1 0 npm ERR version No package json found 有人知道如何使用不同
  • C 静态代码分析器

    您使用哪种静态代码分析器 如果有 我一直在 Python 中使用 PyLint 我对它非常满意 现在我需要类似的 C 代码 为了正常的日常使用 您需要抑制多少输出 维基百科维护着一个静态代码分析工具列表 http en wikipedia
  • 监听 redux 动作

    我想创建一个可重用的 redux 表模块 它将存储和更新页码 显示的总页数等 我可以在所有页面之间共享这些模块 但是 我需要更新操作来触发刷新数据操作 该操作将根据页面到达不同的端点 因此 可能类似于页面特定的监听 RefreshData
  • 从 plist 文件中解码数据

    我丢失了在 Macbook Air 上用 Textwrangler 编写的文本文件中的一些数据 我在扩展名为 plist 的文件中找到了其中一些 文件是用 xml 编写的 如下所示
  • 将 Django 部署到 AWS;傻瓜静态文件

    我对这个项目的最后一步完全迷失了 到目前为止 我已经能够开发一个 Django 应用程序 它可以在本地主机上按照我想要的方式工作 我已经能够将网站部署到 AWS EC2 但我一定错过了有关提供静态文件的一些基本知识 我什至还没有尝试过媒体文
  • 使用 proguard 混淆文件名

    我正在使用 proguard 和 Android Studio 混淆我的 apk 当我反编译我的apk时 我可以看到很多文件 例如aaa java aab java ETC 但我项目中的所有文件都有原始名称 有没有办法混淆我的项目的文件名
  • SwiftUI 更新主菜单 [已解决] kludgey

    真正的问题 你如何更新mainMenu在 SwiftUI 中 它真的可以工作吗 我在 SwiftUI 中构建了一个基于 MacOS 文档的应用程序 其中包括所有内置的文件菜单命令 即关闭 保存 复制 重命名 等 在保存文档之前 我会验证结构
  • C# 中 getter 和 setter 的接口

    当我读到这里时http msdn microsoft com en us library 75e8y5dd 28v VS 100 29 aspx http msdn microsoft com en us library 75e8y5dd
  • 使用 SqlDataReader.IsDBNull 时使用列名

    我已经得到了从 SQL DB 读取数据的代码 我不知道应该如何编辑它 以便我可以使用原始列名称而不是列索引 string query SELECT FROM zajezd WHERE event thisrow AND year klien
  • 包含视频的 YouTube 播放器 API 列表

    我正在使用 YouTube 播放器 API 我想直接在我的代码中制作自己的自定义播放列表 不使用来自 youtube 的播放列表 ID 这是我的播放列表代码 不起作用 player loadPlaylist list mGalEx6ufUw
  • VS2017 RC1 安装安装错误 - Microsoft.PortableLibrary.TargetingPack.Msi 失败 - 无 XAML

    我安装 VS2017 时出错 Package Microsoft PortableLibrary TargetingPack Msi version 15 0 26004 1 failed to install 实际的 IDE 将打开 但我
  • 如何在 React Native 和 Expo 中离线隐藏广告横幅或无法加载广告时?

    我在我的 React Native 应用程序中使用 expo 和 admob 实现了广告 但我想在没有加载广告时摆脱空白 阻塞空间 还没有找到任何例子 除了横幅之外 我在该页面上有一个标题和滚动视图 这就是 Admob 横幅的实现方式 Di
  • 非易失性领域的出版与阅读

    public class Factory private Singleton instance public Singleton getInstance Singleton res instance if res null synchron
  • Postgres where 子句比较时间戳

    我有一个表 其中列的数据类型timestamp 其中包含一天的多条记录 我想选择与日期对应的所有行 我该怎么做 Assuming you actually mean timestamp because there is no datetim
  • PHP:如何检查 Guzzle 4 中的超时异常?

    如果请求期间发生错误 Guzzle 会引发异常 不幸的是 似乎没有特定于超时的错误 这对我来说很重要 因为我知道这些错误偶尔会发生 我想重试相应的请求 并且需要能够判断错误是否是由于超时而发生的 来自docs http docs guzzl
  • std::类似向量的类经过优化以容纳少量项目[重复]

    这个问题在这里已经有答案了 在程序的一个时间关键部分中 有一个类成员如下所示 std vector m vLinks 在分析过程中 我注意到该向量大约 99 98 的执行仅包含 0 或 1 个项目 然而 在极少数情况下 它可能会容纳更多 根