我正在开发一个名为智能呼叫布洛克的Android应用程序,它允许您输入regex模式,然后检索传入的电话号码并执行匹配,然后根据匹配是否成功允许/拒绝呼叫。
用户输入的模式应该允许:
either a digit, or a dot (meaning don't care the digit at this position),
or a range (e.g. [3-7]), or a set of digits (e.g. [2, 5, 8])
现在,我已经编写了代码,手动比较输入的电话号码数字与模式,并允许/拒绝相应的电话号码。它以线性时间运行(比较数等于电话号码中的数字数)。
对于android应用来说,哪个应该更快更轻呢?
为什么和怎么做?
编辑:
我已经粘贴了代码这里。我无法对android进行适当的基准测试,尽管我可以将这两种方式作为我系统上的普通java程序进行执行时间比较。但是我不认为仅仅通过在系统上看到这些程序的运行时间就能得出比在实际的android设备上运行时更能得出的结论。
发布于 2014-05-10 15:58:44
首先,这不是一个很好的问题,因为没有办法提供参考或者用你给出的内容来测试我的答案。因此,一些基于理论的答案:
对于android应用来说,哪个应该更快更轻呢?
你的代码应该更快。原因有二:
因此,如果您的代码运行速度比等效正则表达式慢,那么您的代码就不好了。请注意:在Android中,您的代码可能是用Java编写的,我假设Android库仍然是Java代码。这是我上一次给Android写信,但那是几个版本前的事了。Android编译器还不如原来的gcc。因此,如果添加了一些优化,那么您可能必须在本地重新实现代码,以获得比regex更好的效果。
非常重要的警告和有教养的猜测:从文件中读取模式和编译(如果使用regexes)应该只在应用程序启动期间完成一次。如果这样做,代码和regex方法之间的速度差异将非常小,因此不会产生任何影响。
https://stackoverflow.com/questions/23581580
复制相似问题