比如在人脸比对时,用sqlite保存人脸底库特征值,然后当用一张图片去和底库中的人脸做人脸特征值比对时,那么比对时需要遍历底库,这时候循环读取底库是比较慢的,优化的方法就是把底库的所有东西保存到内存中,例如保存到C++的嵌套map中,然后这时候去遍历底库时间会快很多倍,具体做法就是:
1.初始化的时候把数据库中的所有东西读取到内存中,然后后面比对的时候直接和内存中的东西进行比对,不再去遍历数据库。
2.由于一般会有对数据库的增删待查接口,因此每次增加一个条目的时候,不仅在数据库文件中增加,要同时在内存中增加,删除时也是,同时把数据库和内存中的数据删除,保证内存中保存的和数据库文件的一直同步。
在某项目中采用上述方法进行优化,处理时间由40ms减少为2ms.