1

此处的第 331 行(openjdk 的 MutableBigInteger 源代码)定义了函数 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实用程序类,用 替换所有 for 循环不是更好(更快吗?规范?)Arrays.copyOfRange(value, offset, intLen);

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

4

2 回答 2

2

在我花一些时间分析和弄清楚他们为什么会做出他们做出的决定之前,我不会对 openjdk 实现争论不休(他们可能是错误的,但我的快速判断更有可能是错误的)。

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

于 2013-07-12T19:30:34.407 回答
1

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

这里有一些关于复制数组的信息,非常有用

我从那个链接中得到的是,如果你不需要速度,不要费心去改变它。引入错误和乏味的风险是不值得的。

于 2013-07-12T19:31:48.910 回答