正确的使用下标
通常情况使用下标访问数组时,是可以直接根据下标访问到对应数据的,但有时可能会因为使用方式不当导致效率低下,例如以下例子:
?脚本中定义了变量returnlist,类型为上图所示,实际上可以理解为一个具有深层结构的内表,toReturn是一个表类型字段,后续在循环访问每一行的Result字段时,以下两种方式在数据量大的时候在效率上会有非常明显的差距:
//错误写法
returnlist.toReturns[i].each{
Messages = new MessagesStruc(
HGUID: headerguid,
MsgType: it.MsgType,
MsgClass: it.MsgClass,
MsgNo: it.MsgNo,
Message: it.Message,
)
toMessages.add(Messages)
}
//正确写法
returnlist[i].toReturns.each{
Messages = new MessagesStruc(
HGUID: headerguid,
MsgType: it.MsgType,
MsgClass: it.MsgClass,
MsgNo: it.MsgNo,
Message: it.Message,
)
toMessages.add(Messages)
}
就是一个小小的下标位置错误,导致在遍历数据效率上有极大差异,类似于ABAP中的LOOP多层嵌套。
以上为经历了第一个CPI项目关于性能优化的一点心得,回顾整个开发周期,前期因为对这个产品的开发各种不熟悉,写出了很多在现在看来不完美的接口方案,简单总结一下,希望后面在开发过程中可以避免掉一些性能问题。