考虑一个员工管理系统应用程序,现在向其中添加一个生物识别机器。用户可以在进入和退出建筑物时滑动手指以进出系统。
到目前为止,我的应用程序目前可以成功注册从我的生物特征识别机检索到的指纹模板,并将其保存到blob
/ varchar
字段中的数据库中。
我在我创建的本地mac应用程序的此本地数据库中有3000多个注册用户。现在,我正在实现匹配算法,并且想知道是否应该:
通过一个数据库调用将本地数据库(干草堆)中的所有3000个指纹模板加载到NSMutableArray
中,该调用将在应用程序启动时完成,然后将每个进入或退出用户的指纹模板(needle)与干草堆进行匹配建造;
进行多个SQL调用,一次返回干草堆的一个元素,将其与指针进行比较,如果不匹配,则从干草堆返回另一个元素,直到它们匹配为止。要么,
抓取干草堆的一部分(例如一次抓取100个指纹模板),然后将其加载到NSMutableArray
中,然后将针头对准该干草堆子集。
哪种方法最适合快速闪电?
我正在使用atm的指纹SDK,就指纹验证本身而言,其目的是要快如闪电,但我需要处理数据库方面的事务并管理大海捞针和自己动手,理想情况下也希望它也要快。
我目前正在使用SQLite,如果我需要采用Cocoa Core Data来实现自己希望完成的更好的方法,那么我会不知所措,并且可以采用该系统在速度方面提供更好的用户体验
这是一个指纹模板数据以base 64编码的字符串格式显示的示例。
最佳答案
3000条记录似乎很小。模板有多大?如果您需要进行复杂的比较,并且模板的大小不是非常大的话,我几乎可以肯定会将它们全部加载到内存中。
各种方法听起来并不容易实现。您现在以哪种方式进行操作,性能瓶颈是什么?从简单实现开始,然后看是否有问题。通常没有,并且您花费大量时间使事情变得毫无价值。