优化大数据读写(C++)

2024-05-22

我正在寻求优化 C++ 模拟应用程序的读取/写入大量数据。称为“映射”的数据本质上由整数、双精度数、浮点数和单个枚举组成。该地图数据的大部分大小是固定的,但一小部分可能会变化 (从几KB到几KB)大小。几个这样的映射(通常是数百万个)在应用程序启动时计算一次,然后存储在单个二进制文件中,以便在每个模拟时间步进行解析。

由于有几百万个映射,因此解析该二进制文件非常慢,fseek 和 fread 是主要瓶颈。我正在寻找一种替代方法来完成同样的事情。

有什么指点吗?


由于您没有提及正在运行该文件的操作系统,因此您是否查看过内存映射文件,然后使用标准内存例程来“遍历”文件?

这样您就不会使用 fseek/fread 而是使用指针算术。这是一个 mmap 示例 http://www.cs.purdue.edu/homes/fahmy/cs503/mmap.txt将一个文件从源文件复制到目标文件。这可能会提高性能。

您可以研究的其他事情是将文件分割成较小的文件,并使用与时间单位相对应的哈希值关闭然后打开下一个文件以继续模拟,这样处理可以更积极地缓存的较小文件由主机操作系统决定!

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

优化大数据读写(C++) 的相关文章

随机推荐

  • 如何在 React js 上使用历史记录重定向到另一个页面?

    我在前端使用 Reactjs 并在后端使用 Laravel 开发了一个注册页面 我希望当我单击注册按钮时 它将被重定向到我的登录页面 我的注册组件是 handleSubmit event gt event preventDefault co
  • AWS S3 预签名 URL 的 IAM 角色

    我正在 EC2 实例中部署一个服务器程序 该实例需要能够为 s3 创建预签名 URL 到目前为止 我已将 AWS 凭证放在环境变量中进行测试 但我现在想切换到 IAM 角色策略 但是 我不确定该角色也应该有权访问哪些策略 我最初的猜测是拥有
  • 流口水中的无状态与有状态会话行为

    我是新来的流口水 我试图了解 Drools 提供的无状态会话和有状态会话之间的区别 据我初步了解 在无状态会话的情况下 如果在任何规则的操作执行期间修改了事实 则不会重新提交给推理引擎来查找与修改的事实相匹配的新规则 在有状态会话的情况下
  • 用教义 2 DBAL 连接子查询

    我正在重构 Zend 框架2应用程序使用学说 2 5 DBAL 而不是 Zend DB ZF1 我有以下 Zend Db 查询 subSelect db gt select gt from user survey status entrie
  • 如何在 Angular 中的 chrome 浏览器中捕获控制台日志

    这是我为日志 错误 警告和调试编写的代码片段 如何查看浏览器中存储的值 let defaultLog console log bind console let defaultError console error bind console
  • C++ 模板似乎破坏了访问说明符

    由于明显的原因 以下代码无法编译 即 Foo 正在尝试访问 Bar 的私有成员 但是 如果您取消注释 注释标记的行 使 Foo 成为模板 它会编译并输出 42 我在这里缺少什么 为什么这有效 在我看来不应该 感谢您的帮助 include
  • 如何以编程方式向 DRF 3 中的 PrimaryKeyRelatedField 提供“queryset”

    为了有一个非只读PrimaryKeyRelatedField 您需要提供包含有效选项的查询集 如何根据当前请求 用户 正确填充该查询集 关键是子类化PrimaryKeyRelatedField并超载get queryset方法 使用请求上下
  • R 中的卡方拟合优度检验

    我有一个观察值向量 还有一个用模型计算的值向量 actual lt c 1411 439 214 100 62 38 29 64 expected lt c 1425 3 399 5 201 6 116 9 72 2 46 3 30 4 6
  • 连接两个表而不返回不需要的行

    我的表结构如下所示 tbl users tbl issues userid real name issueid assignedid creatorid 1 test 1 1 1 1 2 test 2 2 1
  • C++ GUI 桌面 Windows 应用程序的测试自动化工具/库/框架

    不幸的是 我有一个在 Windows 上运行的 GUI 桌面应用程序 并使用 Borland C 编译器进行编译 我知道这是一项非常古老的技术 但这就是生活 我工作的公司有很多免费的 QTP 许可证 但说实话 我不喜欢这个工具 我想用一些开
  • 在 Google App Engine 上连接 Mongoose

    我已在 Google App Engine 上成功部署了自定义 Node js 应用程序 但是 我在启动应用程序时遇到问题 因为猫鼬在尝试连接时超时 令人沮丧的是 猫鼬在我的本地计算机上以完全相同的参数连接得很好 我的 MongoDb UR
  • “gulp”不被识别为内部或外部命令

    我正在尝试使用Gulp http gulpjs com and Node Js https nodejs org en 流式传输我的生产过程中缩小和连接 CSS JS 文件的过程 这是我所做的 我安装了Node Js https nodej
  • 标记上存在语法错误,需要 AnnotationName - 查询错误

    我收到了令牌语法错误 AnnotationName 预期出现在以下行 query findInBackground new FindCallback
  • 使用 scipy 的solve_bvp 求解 BVP

    我有一个由 3 个微分方程组成的系统 我相信从代码中可以明显看出 具有 3 个边界条件 我设法在 MATLAB 中用一个循环来解决这个问题 一点一点地改变最初的猜测 而不会在程序即将返回错误时终止程序 然而 关于scipy s solve
  • ASP.Net MVC 3 JSON 模型绑定和服务器端模型验证与客户端验证混合

    我一直在使用新的 MVC3 Json 模型绑定 它非常好 目前 我可以将 JSON 发布到控制器并绑定它 模型验证也进展顺利 但如果模型无效怎么办 我想返回 JSON 并让客户端通知用户 就像在 mvc 中执行正常客户端验证的方式一样 有谁
  • C# 从字符串中删除制表符,制表符识别

    我想从字符串中删除制表符 我正在使用这段代码 但它不起作用 string strWithTabs here is a string with a tab tab character char tab u0009 String line st
  • 使用 SciKit-learn 和大型数据集进行文本分类

    首先 我昨天开始学习Python 我正在尝试使用 SciKit 和大型数据集 250 000 条推文 进行文本分类 对于该算法 每条推文都将表示为 4000 x 1 向量 因此这意味着输入为 250 000 行和 4000 列 当我尝试在
  • 使用 C# 查找数据表中的最小值和最大值[重复]

    这个问题在这里已经有答案了 可能的重复 如何选择数据表中列的最小值和最大值 https stackoverflow com questions 2442525 how to select min and max values of a co
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 优化大数据读写(C++)

    我正在寻求优化 C 模拟应用程序的读取 写入大量数据 称为 映射 的数据本质上由整数 双精度数 浮点数和单个枚举组成 该地图数据的大部分大小是固定的 但一小部分可能会变化 从几KB到几KB 大小 几个这样的映射 通常是数百万个 在应用程序启