数据访问加速器库
当 Java™ 代码处理本机数据时,可以使用数据访问加速器 (DAA) 库中的方法来提高性能。
有关此库的概述,请参阅 本机数据操作。
有关可用类的信息,请参阅 API 文档。
示例:将压缩十进制转换为 BigDecimal 对象
在此示例中,将一个 100 位的带符号压缩十进制(不包括符号)存储在一个名为 pdarray 的字节数组中。
正常代码:
...
String pdsb = new StringBuffer();
int precision = 100;
if (isNegative(pdarray, precision))
pdsb.append('-');
for (int i = 0; i < precision; ++i)
pdsb.append(getDigit(pdarray, i) + '0');
return new BigDecimal(pdsb.toString());
...
使用 DAA API 的对等代码:
...
return com.ibm.dataaccess.DecimalData.convertPackedDecimalToBigDecimal(pdarray, 0, precision, 0, false);
...
示例:添加两个压缩十进制类型
在此示例中,添加了两个压缩十进制:pdarray1 和 pdarray2,并返回了结果 pdarrayResult。 压缩十进制和其结果会作为字节数组存储。 这两个初始数组的精度(小数值中的小数位数,不含符号)为 100。
如果不使用数据访问加速器 API,您必须编写在压缩十进制和 BigDecimal 格式之间转换的方法(例如,使用中间字符串对象):
...
BigDecimal operand1 = myPackedDecimalToBigDecimalMethod(pdarray1, 100);
BigDecimal operand2 = myPackedDecimalToBigDecimalMethod(pdarray2, 100);
BigDecimal result = operand1.add(operand2);
myBigDecimalToPackedDecimalMethod(result, pdarrayResult);
return pdarrayResult;
...
使用 DAA API 的对等代码。 结果的精度为 1,大于两个初始十进制的精度。 所有压缩十进制的
偏移量(压缩十进制开始的地方)都为 0:
...
com.ibm.dataaccess.DecimalData.addPackedDecimal(pdrrayResult, 0, 101, pdarray1, 0, 100, pdarray2, 0, 100, false);
return pdarrayResult;
...