Anylogic:更快地填充数组值
Anylogic: Fill Array values faster
我确实尝试在模拟开始时从内部数据库 table 填充类型为 double[8760] 的数组参数。此 table 包含 hourofyear 列和每个参数的列。我的代码可以正常工作,但处理数据的速度非常慢:
for (int row_counter=0;row_counter<= 8759; row_counter++) {
ProfileParameterA[row_counter] = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.uniqueResult(data.a, double.class);
ProfileParameterB[row_counter] = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.uniqueResult(data.b, double.class);
}
关于如何改进导入以更快地将 table 的数据加载到参数中的任何建议?
非常感谢。
亨氏-S
试试这个:
ProfileParameterA = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.list(data.a).stream().mapToDouble( d -> d ).toArray();
ProfileParameterB = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.list(data.b).stream().mapToDouble( d -> d ).toArray();
它是 Java Stream API 的一部分,方便以函数式风格处理列表、数组和集合。
我确实尝试在模拟开始时从内部数据库 table 填充类型为 double[8760] 的数组参数。此 table 包含 hourofyear 列和每个参数的列。我的代码可以正常工作,但处理数据的速度非常慢:
for (int row_counter=0;row_counter<= 8759; row_counter++) {
ProfileParameterA[row_counter] = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.uniqueResult(data.a, double.class);
ProfileParameterB[row_counter] = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.uniqueResult(data.b, double.class);
}
关于如何改进导入以更快地将 table 的数据加载到参数中的任何建议?
非常感谢。
亨氏-S
试试这个:
ProfileParameterA = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.list(data.a).stream().mapToDouble( d -> d ).toArray();
ProfileParameterB = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.list(data.b).stream().mapToDouble( d -> d ).toArray();
它是 Java Stream API 的一部分,方便以函数式风格处理列表、数组和集合。