现在有一个程序 处理收到的数据
这些数据 是不同设备发来的 只包括设备ID 和 数据
比如设备ID 分为 1000  数据为 100.23
每个设备我在ini文件中配置了响应的量 如 单位 名称 处理算法 等
现在程序是 收到一个数据包 就去ini文件里读取该设备的配置信息 以便处理 最后显示
我总觉得这样的方式 效率不好 
一两个设备还好 可是设备多了呢 
成百上千的设备分别传数据包过来 
还要每个都读ini的话
效率不知道要低到哪里去了所以请问一下大家 这个问题是如何做的? 
程序启动时把所有的设备配置信息都读出来 ?保存到变量中?
困惑~~

解决方案 »

  1.   

    设备的数量如果真的是“成百上千”的,就别用ini了,用数据库吧,全部保存到变量中也不太好,如果频繁,数据库可以长连接个人意见,关注高人高见
      

  2.   

    你把你的设备配置信息读取一个结构体数组中去,不能每接收到一条数据后就去读配置文件。
    结构体可以如下形式定义:typedef struct DevInfoNode{
    char szDevId[10]; //设备号
    char szDepartment[50]; //设备单位
    char szName[20]; //名称
    int nArithmetic; //算法
    }DevInfoNode;将各个配置信息在程序初始化时读到结构体中,并保存到一个数组或者链表中去。
    如果设备多的情况下要考虑查找设备时的效率问题。
      

  3.   

    ini文件的内容能有多大,全部读入内存是首选.如果设备ID是顺序的数字,可以用数组来映射.否则,就用map.
    std::map<int,struct>
      

  4.   

    ini文件效率极低。说白了就是封装的file类,本质上还是文件指针移来移去。
    还是xml吧。
    它一次读入整个文件。然后在内存里生成一个树的结构。查找都是通过map表来的。效率很快。
    map表1000万数据查找。实际查找次数都在十几次左右。
    其实还是觉得数据库查找快。