接收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,将每个线程所要读取的数据解耦。