当我尝试对服务器端JavaScript(SSJS)中的前向和反向循环迭代之间的执行时间差异进行基准测试时,出现了一个(奇怪的)问题。虽然这个示例代码
var i,n=9999;
var arr=new Array(n);
for (i=0;i<n;i++) arr[i]=i; // WORKS
i=n; while (i--) arr[i]=i; // WORKS
工作正常,以下代码
var i,n=10000; // changed n from 9999 to 10000
var arr=new Array(n);
for (i=0;i<n;i++) arr[i]=i; // WORKS
i=n; while (i--) arr[i]=i; // THROWS ArrayIndexOutOfBoundsException
为反向迭代抛出 ArrayIndexOutOfBoundsException 。只要数组长度低于 10000 ,反向while循环才能正常工作。谁能告诉我这里发生了什么?
答案 0 :(得分:1)
不是答案,但作为此类错误的解决方法,我建议使用java.util.ArrayList
。
var i,n=10000;
var arr=new java.util.ArrayList(n); //changed to ArrayList
for (i=0;i<n;i++) arr.add(i); // changed to .add(value)
i=n; while (i--) arr.set(i, i); // changed to .set(i, value)
答案 1 :(得分:0)
此问题的修复程序已提供给XPages Core Runtime,并将成为下一个XPages产品版本的一部分。感谢您引起我们的注意