我有一个非常大的String列表...(ArraList myList),我想非常快速地从这个列表中删除重复的项目..我将项目复制到HashMap中,这是我找到的最好的算法,但它是不够快... 我发现了一些东西,比如使用本地语言编写代码并在android应用程序中实现它,我们可以使用本机语言从列表中删除重复,是否有任何由汇编语言编写的函数可以比java更快地执行此操作?
如果没有,是否有一个函数可以比java更快地比较两个字符串?
答案 0 :(得分:1)
要回答这个问题,可以使用NDK在C for Android中进行编程。而且,由于从C到汇编程序的方式相当短,所以在Assembler中也是可能的。虽然Java性能目前相当不错,但声称没有任何语言能够更快地检查数组中的重复数据,这对我来说有点过高估计。
然而,在语言之间切换是复杂的,并且对于任务如此微不足道,您只需访问JNI级别的数组就可能会失去性能。
重新考虑算法可能更合理。例如:
LinkedHashSet
。这样可以防止重复项目开始。 答案 1 :(得分:0)
是否有汇编语言编写的函数可以比java更快地执行此操作?
这样的功能是否已经存在?我不知道......如果有的话,我不知道怎么会找到它。
你能写一个这样的功能吗?也许......在理论上。
假设有一个功能可以在理论上尽可能快地执行此任务(在某些情况下)。
无论编写函数的语言是什么,都应该可以找出函数编译器(或汇编)的机器代码。
完成后,您可以将该机器代码转换为汇编程序...提供汇编语言功能,以最高性能执行任务。
既然这样的汇编程序可以存在(理论上),那么一个足够聪明/熟练/耐心的人可以(理论上)从头开始编写它!
但问题是你需要成为一个非常好的汇编程序员(对所涉及的算法有很好的理解)才能解决这个问题。而踢球者不能保证现有的Java实现(使用优秀的JIT编译器编译时)不会那么快。
我在这里感到悲观的原因是在HLL(如Java)中实现高效的哈希表对大多数人来说已经足够了。在汇编语言中实现相同的思考将会变得更难。 (那是修辞。你不能真正量化那样的难度......)
如果没有,是否有一个函数可以比java更快地比较两个字符串?
我不知道这会有多大帮助。如果您正确使用HashSet
,那么字符串比较不应该是您的问题的性能瓶颈。即使你的重复比例很高,也不行。
答案 2 :(得分:0)
您获取并存储字符串列表的位置?可能正在使用SQLite或类似CQEngine之类的东西存储和管理数据会更好吗?