mfc如何高效率的对比接收到的数据与数据库里的数据?
动感小麦兜 2019-01-02 09:29:33 先说一下大致要实现的功能:软件启动后需要加载一个dbc数据库,这个数据库里存放有报文的一些信息(如id,data,偏移量,比例系数等)。软件通过串口接收报文,然后在软件里将接收到的报文与dbc数据库进行对比,如果该报文的id在dbc数据库里,那么会通过dbc数据库解析该报文(把报文的实际值解析出来)。
遇到的问题:如何高效率的把收到的报文与dbc数据库进行对比?如果仅仅是实现功能,可以用for和if搭配进行遍历,但这种方式效率太慢。
for(int i=0;i<length;i++)//需要从头进行遍历,效率低
{
if(rcvdata.id==dbc.id[i])
{
//解析该报文
}
}
如果用switch case来做的话,效率应该比if高,但case后面跟的值只能是常数,所以需要在软件里就把这些定义好,就没法用到dbc数据库了。由于dbc数据库需要经常更换,所以在软件里固化这些常数是不可取的。
所以恳请大神支招,看看有没有比较好的方法来解决这个问题。