Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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应用程序编写汇编语言代码_Java_Android_Assembly - Fatal编程技术网

Java 为android应用程序编写汇编语言代码

Java 为android应用程序编写汇编语言代码,java,android,assembly,Java,Android,Assembly,我有一个非常大的字符串列表…(ArraList myList),我想很快从列表中删除重复的项。我将这些项复制到HashMap中,这是我找到的最好的算法,但它还不够快。。。 我发现了一些东西,比如使用本机语言编写代码并在android应用程序中实现,我们可以使用本机语言从列表中删除重复项吗?是否有任何用汇编语言编写的函数可以比java更快地完成这项工作 如果没有,是否有一个函数可以比java更快地比较两个字符串 有没有用汇编语言编写的函数比java编写的更快 这样的功能是否已经存在?我不知道。。。

我有一个非常大的字符串列表…(ArraList myList),我想很快从列表中删除重复的项。我将这些项复制到HashMap中,这是我找到的最好的算法,但它还不够快。。。 我发现了一些东西,比如使用本机语言编写代码并在android应用程序中实现,我们可以使用本机语言从列表中删除重复项吗?是否有任何用汇编语言编写的函数可以比java更快地完成这项工作

如果没有,是否有一个函数可以比java更快地比较两个字符串

有没有用汇编语言编写的函数比java编写的更快

这样的功能是否已经存在?我不知道。。。我不知道如果有人会怎么发现它

你能写这样一个函数吗?大概理论上

  • 假设有一个函数在理论上尽可能快地执行此任务(在某些上下文中)

  • 无论函数是用哪种语言编写的,都应该能够找出函数编译器(或汇编程序)的机器代码

  • 完成后,您可以将机器代码转换为汇编程序。。。提供一个汇编语言函数,以最大性能执行任务

  • 由于这样一个汇编程序(理论上)是存在的,一个足够聪明/熟练/耐心的人(理论上)可以编写它。。。从头开始

但问题是,你需要是一个非常好的汇编程序员(对所涉及的算法有非常好的理解)才能实现这一点。更要命的是,不能保证现有的Java实现(当使用好的JIT编译器编译时)不会那么快

我在这里持悲观态度的原因是,在HLL(如Java)中实现一个高效的哈希表对大多数人来说已经够难了。在汇编语言中实现同样的想法将是困难的几个数量级。(这是修辞。你真的无法量化那样的困难…)


如果没有,是否有一个函数可以比java更快地比较两个字符串


我看不出这有多大帮助。如果正确使用
哈希集
,则字符串比较不应成为问题的性能瓶颈。即使你的重复率很高也不行。

要回答这个问题,可以使用C语言为Android编程。而且,由于从C到汇编程序的过程相当短,所以在汇编程序中也可能实现。尽管Java的性能目前相当不错,但声称任何语言都无法更快地检查数组中的重复项,这在我看来似乎有点高估了

然而,语言之间的切换是复杂的,对于如此琐碎的任务,您只需访问一个级别的数组就可能降低性能

重新考虑算法可能更合理。例如:

  • 如果您只需要迭代列表,但必须对其进行排序,请使用
    LinkedHashSet
    。这将防止重复项目的开始
  • 如果有大量重复项,则删除操作可能过于昂贵,因为阵列的大部分可能会移动很多次。尝试将要删除的项改为null,然后从头开始重新创建数组,跳过null
从哪里获取和存储字符串列表?可能使用SQLite或类似的东西来存储和管理数据会更好?

不。汇编程序无法神奇地消除算法复杂性。为什么将它放在
ArrayList
中,而不是一开始就放在
Set
中?HashMap?为什么不是哈希集?我有一个列表。。现在我想使用Contact.write()方法删除重复项。。。此方法以字符串形式返回其所有内容的联系人。我还不清楚,但如果我没有弄错的话。。使用“Java本机接口”可以避免通过JIT编译器。。我的问题是。。“如果仅仅通过参数将列表的数据移动到汇编函数中,并将清理后的列表作为‘返回’再次获取,代码将消耗我试图避免的所有时间..通过将列表移动到哈希集..函数中导致延迟的大部分是什么..在回答中回答问题..不要问更多。这就是在评论部分是因为我正在从文件(5000个vcf文件)中读取字符串…有没有办法比较两个文件的联系人并删除其中一个,如果它们是相同的?