【发布时间】:2020-04-25 17:04:28
【问题描述】:
我正在开发一个解决以下问题的android应用程序:给定一个单词,例如'meat',找到所有由'meat'中的字符组成的英文单词,即'mate'、'tame'、'meta', “团队”和“肉”。
问题在于优化设计。当前的实现是这样工作的:
- 从 json 文件中获取 10,000 个英文单词的集合,并在应用安装时存储在 room sqlite 数据库中。
-
当用户搜索一个词时,会发生以下情况:
- 应用程序通过将用户输入的单词随机播放 5000 次(技术上为 5000 * 字长)创建一组所有可能的排列。
- 应用程序查询数据库以获取存储在单词表中的所有单词的列表。
- 应用程序将这两个集合相交以查找匹配项。
问题在于,当用户在真实设备上搜索单词时,应用程序会滞后。单词超过 6 个字母时,响应时间较长。
我正在寻找更好的方法。理想的解决方案必须以某种方式做到以下几点:
- 零延迟。应用程序不得在用户输入单词时出现延迟。
- 应用程序必须正常响应长词。
【问题讨论】:
-
“当单词超过 6 个字母时需要很长时间才能响应”——使用Android Studio's profilers 或简单的
Log调用来确定您将时间花在哪里。然后,确定您可以采取哪些措施来提高慢点的性能。如果您无法确定如何提高性能,请通过minimal reproducible example 提出单独的问题并寻求有关性能改进的帮助。