gpt4 book ai didi

javascript - Gwt HashSet 和 HashMap 迭代器功能很慢

转载 作者:行者123 更新时间:2023-11-30 13:15:10 26 4
gpt4 key购买 nike

GWT 为 HashMap.iterator()HashSet.iterator() 生成的 javascript 代码非常非常慢。有什么办法可以加快速度吗?

最佳答案

非常非常慢?你必须更具体一点。这是一个总结 100000 个数字的小例子:

final int N = 100000;

final long startInsert = System.currentTimeMillis();

final HashSet<Integer> set = new HashSet<Integer>(N);
for (int i = 0; i < N; i ++)
set.add(i);
final long stopInsert = System.currentTimeMillis();

RootPanel.get().add(new Label(
"Time to insert: " + (stopInsert - startInsert) + "ms"));

final long startIterate = System.currentTimeMillis();
final Iterator<Integer> iterator = set.iterator();

int sum = 0;
while (iterator.hasNext()) {
final Integer integer = iterator.next();
sum += integer;
}

final long stopIterate = System.currentTimeMillis();
RootPanel.get().add(new Label("Sum: " + sum +
", Time to iterate: " + (stopIterate - startIterate) + "ms"));

让我们在 Core2 Duo 上试试这个:

这是 Firefox 15 中的输出(编译模式):

Time to insert: 490ms
Sum: 4999950000, Time to iterate: 766ms

和 Chrome 21(编译模式):

Time to insert: 130ms
Sum: 4999950000, Time to iterate: 105ms

这比在开发模式下慢:

Firefox 15(开发模式):

Time to insert: 16ms
Sum: 704982704, Time to iterate: 12ms

Chrome 21(开发模式):

Time to insert: 59ms
Sum: 704982704, Time to iterate: 10ms

但考虑到这是 JavaScript 与 Java 的对比,结果实际上相当不错。

(顺便说一句,如果有人想知道为什么 Java 中的总和 (704982704) 与 JavaScript (4999950000) 不同...这是预期的,请参阅 https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsCompatibility#language )

关于javascript - Gwt HashSet 和 HashMap 迭代器功能很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com