数据校核系统

新闻媒体 其他 案例ID:162778
1 + 1 = 3
8 年经验· 中国电科院
微信扫码沟通,客服可协助直接对接工程师;如当前档期不合,也可继续推荐相似案例作者。

案例介绍

接收96点模型QS文件(每个文件大概100万行)和96点全国发电计划sgcc文件(每个文件大概20万行),主进程调用96个线程(每个线程以内存映射的方式依次读取QS文件和sgcc文件)将QS文件和sgcc文件写入对应的映射map中,待所有文件读取完毕并将数据写入内存,依据考核公式计算各考核指标。
此项目主要用到的技术有:linux下多线程pthread库,linux下内存映射mmap函数,boost库,stl标准容器等。
难点在于要读取的文件数据量庞大,高达20G,还要将整个程序的时间控制在3分钟以内,经过分析耗时较多的地方主要是频繁的文件io,经过研究采用内存映射的方式将整个QS文件和SGCC文件映射到内存,避免耗时的文件io,然后采用多线程pthread的方式依次读取qs和sgcc,同时为了避免采用互斥锁降低线程效率,设计了对应的映射map,将每个线程所要读取的数据解耦。

数据校核系统

新闻媒体 · 其他 案例ID:162778
联系该工程师
微信扫码,建群沟通
作者: 1 + 1 = 3 - 8年经验- 中国电科院

案例介绍

接收96点模型QS文件(每个文件大概100万行)和96点全国发电计划sgcc文件(每个文件大概20万行),主进程调用96个线程(每个线程以内存映射的方式依次读取QS文件和sgcc文件)将QS文件和sgcc文件写入对应的映射map中,待所有文件读取完毕并将数据写入内存,依据考核公式计算各考核指标。
此项目主要用到的技术有:linux下多线程pthread库,linux下内存映射mmap函数,boost库,stl标准容器等。
难点在于要读取的文件数据量庞大,高达20G,还要将整个程序的时间控制在3分钟以内,经过分析耗时较多的地方主要是频繁的文件io,经过研究采用内存映射的方式将整个QS文件和SGCC文件映射到内存,避免耗时的文件io,然后采用多线程pthread的方式依次读取qs和sgcc,同时为了避免采用互斥锁降低线程效率,设计了对应的映射map,将每个线程所要读取的数据解耦。

相似案例推荐

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在 1 小时内与您联系确认。

1小时精推人才

需求方专属客服,免费梳理匹配

需求方客服微信二维码
扫码加微信 · 客服人工对接
更多案例
微信沟通 客服 看中这位工程师了?客服帮你 1 小时对接沟通 → ×