Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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
Java 哪一个比较快:在android应用程序中存储10^5大小的数组并在其中搜索,或者启动搜索查询并从数据库中获取数据_Java_Android_Arrays_Database_Time Complexity - Fatal编程技术网

Java 哪一个比较快:在android应用程序中存储10^5大小的数组并在其中搜索,或者启动搜索查询并从数据库中获取数据

Java 哪一个比较快:在android应用程序中存储10^5大小的数组并在其中搜索,或者启动搜索查询并从数据库中获取数据,java,android,arrays,database,time-complexity,Java,Android,Arrays,Database,Time Complexity,我目前正在开发一个应用程序,该应用程序在数据库上有15000多行和20多列数组。如果用户在应用程序中搜索,那么我可以做两件事 1.我将在应用程序运行时保存数据库中的所有数据,然后搜索用户偏好数据。 2/我将把用户数据转换成查询,同时启动数据库并从数据库中检索数据。 另外,我想问一下,我是否在应用程序中存储了10^6*20大小的数组,然后它占用了多少空间,以及如何重新加载应用程序。 若我获取数据,那个么在最坏的数据使用情况下,获取数据的时间复杂性将是什么呢。 感谢您在前面的介绍。如果您为进程分配了

我目前正在开发一个应用程序,该应用程序在数据库上有15000多行和20多列数组。如果用户在应用程序中搜索,那么我可以做两件事 1.我将在应用程序运行时保存数据库中的所有数据,然后搜索用户偏好数据。 2/我将把用户数据转换成查询,同时启动数据库并从数据库中检索数据。 另外,我想问一下,我是否在应用程序中存储了10^6*20大小的数组,然后它占用了多少空间,以及如何重新加载应用程序。 若我获取数据,那个么在最坏的数据使用情况下,获取数据的时间复杂性将是什么呢。
感谢您在前面的介绍。

如果您为进程分配了足够的堆,那么无论哪种方式,数据量都只有大约200 MB或更少,速度都会很快。在现代,这并不是很多数据。哪个更快?那要看情况而定

您的I/O系统有多快?你会使用什么数据库?你将如何编写你的算法?你在并行处理吗?您在代码中写入了哪些bug?访问这些数据需要多少总体程序时间?系统上还运行什么

只有在非常受控的条件下,模拟真实荷载,对这两种方法进行实际测量,才能发现哪种方法更快

但代价是什么?更复杂的系统具有更大的风险和成本。复杂的过早优化代码使代码变得脆弱且难以理解。权变措施​ 花点时间和精力,如果没有什么可以解决的,那就浪费时间和精力


因此,与其问哪个更快,不如问什么更有意义。到底是什么让工作完成的?做什么花费最少?什么更正确?什么可以最大限度地降低风险?

如果我没有完全弄错的话,阵列的大小应该是~160mb 10^6*20*8字节。如果一直都在内存中,这是不太可行的。如果数据库在设备上运行,它们会更快,甚至更快。一页中要显示多少数据?在类似的情况下,我必须只获取行ID来创建一个列表,然后直接从视图适配器中获取可视部分所需的逐行数据。当然,中间的LRU缓存帮助很大。谢谢,@XtremeBaumer。我觉得这很有帮助,而且我在这两方面都做过练习,而且数据库查询速度很快。在Android上,大多数设备都不允许应用程序有200MB的堆。此外,在安卓系统上,您选择分配给进程的内存量取决于设备。这无疑是决定什么才有意义的一个因素。请注意,这与速度无关。谢谢您的回答。我明白你的意思,觉得很有帮助+1.