这里更合适的是:Arrays.copyOfRange()还是普通的循环?

时间:2013-07-12 19:26:59

标签: java biginteger openjdk

这里的第331行(openjdk's MutableBigInteger source)定义了函数toIntArray()。通常,MutableBigInteger是一个数组,例如{0, 0, 0, 0x12345678, ..., 0xffffffff, 0, 0, 0},变量offsetintLen定义非零值的开始和结束位置(数组的实际有效负载)。所以,该功能如下:

int[] result = new int[intLen];
for(int i=0; i<intLen; i++)
    result[i] = value[offset+i];
return result;

由于包已经导入Arrays实用程序类,用Arrays.copyOfRange(value, offset, intLen);替换所有for循环是不是更好(更快?规范?)?

一般来说,我的问题是关于所有相关的情况:在处理这样的情况时是否更好地使用库方法或者没有实际的差异并且它导致几乎相同效率的可执行文件?

2 个答案:

答案 0 :(得分:1)

我不打算用openjdk实现狡辩,直到我花了一些时间剖析并弄清楚他们为什么做出他们做出的决定(他们可能是错的,但我的判断更有可能是错误)。

但是,作为一项规则,使用已建立的库几乎总是比您自己的自制实现更好。

答案 1 :(得分:0)

我使用库方法不是为了提高效率,而是为了干净的代码。

以下是有关复制数组very useful的一些信息。

我从该链接中获取的是,如果您不需要速度,请不要费心去更改它。引入错误和单调乏味的风险是不值得的。