Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android从txt文件中搜索特定单词的性能_Android_Performance_Search_Dictionary_Text Files - Fatal编程技术网

Android从txt文件中搜索特定单词的性能

Android从txt文件中搜索特定单词的性能,android,performance,search,dictionary,text-files,Android,Performance,Search,Dictionary,Text Files,我正在创建一个由大约100000个单词组成的字典,这些单词将存储在一个txt文件中。我可以知道如果我读取一个txt文件并将每个单词存储到arrayList中,然后使用二进制搜索来搜索特定的单词,这会影响android应用程序的性能吗?或者有没有更好的解决方案来增强/优化android txt文件中的单词搜索 谢谢如果您在UI线程上执行此操作,那么是的,它将对应用程序的性能产生影响,特别是如果用户使用的是较旧的设备。具体来说,你的应用程序将按你完成搜索所需的时间计算 如果您在后台线程上执行此操作(

我正在创建一个由大约100000个单词组成的字典,这些单词将存储在一个txt文件中。我可以知道如果我读取一个txt文件并将每个单词存储到arrayList中,然后使用二进制搜索来搜索特定的单词,这会影响android应用程序的性能吗?或者有没有更好的解决方案来增强/优化android txt文件中的单词搜索


谢谢

如果您在UI线程上执行此操作,那么是的,它将对应用程序的性能产生影响,特别是如果用户使用的是较旧的设备。具体来说,你的应用程序将按你完成搜索所需的时间计算

如果您在后台线程上执行此操作(例如使用*),则不会影响应用程序的响应速度。但是,后台线程通常具有较低的优先级,因此搜索将花费较长的时间。当然,如果你的应用程序运行的设备是旧的单核设备,你的主应用程序会感觉有点迟钝,因为CPU将在两个线程之间共享

就搜索单词的实际算法而言,二进制搜索并不糟糕。然而,一点索引将大大有助于加快搜索速度。加载数组中的单词列表时,还要为每个字母创建一个简单索引,指向以该字母开头的第一个单词。这样一来,大大缩小二进制搜索范围的操作将减少O(1)。从技术上讲,这不会改变算法的理论性能(您仍然受到二进制搜索O(logn)的约束),但在实践中,它会对实际性能产生直接影响

顺便说一句,我已经编写了一个简单的单词解算器应用程序,在后台线程和现代设备(Galaxy Nexus或Nexus 7)上进行线性单词搜索,即使这种方法还可以,并且允许我在用户键入时以相对较快的速度更新搜索结果。因此,这完全取决于您执行搜索的频率

  • AsyncTask
    有它自己的问题,所以只能用它来引导代码,但一旦确定了主要逻辑,就尽快切换到更好的解决方案

谢谢您的回复。对不起,我还是个初学者。我可以知道如何为每个字母创建一个简单的索引吗?这是否有点像创建2个arraylist,其中一个存储索引,另一个存储单词?@Franci Penov,有什么比AsyncTask更好?昨晚我发现了API 8的一个主要缺陷。我在尝试使用Thread和Runnable类做同样的事情时遇到了同样的问题。谢谢@Rickfalk只需使用您自己的调度程序,并在其上调度
Runnable
。@AuroraBlaze制作一个要在数组列表中索引的字符映射。@FranciPenov,非常感谢您的解释和指导。我很感激