Thursday, February 18, 2016 8:31 PM

优化完之后,系统AFF我的user,取356个Opportunity的documentItems,从以前的44秒缩短到3.8秒。

优化之后的docItem主方法就两行代码,

性能提高了10倍的原因是因为我没有再使用one order的API去取每个field,而是用OPEN SQL直接取表。

测试的时候发现一个bug,CURRENCY这个field在结果集里空的,因为我上面代码里第23行的join使用的取CURRENCY的foreign key是错误的。

之前的单元测试没有暴露这个issue的原因:

我单元测试的代码是比较origin和opt两个structure的CURRENCY field是否相等,如果不等就说明我优化代码有问题。

我之前单元测试的代码忘记把通过one order API取回的result写到origin的structure里,导致比较时origin和opt的CURRENCY field都是空的,因此认为等价,单元测试通过。

我今天debug了一下one order取currency的代码,应该没有办法把抓currency的直接和到这封邮件第三张图那个很大的JOIN里。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

更多推荐

SAP CRM Opportunity items读取逻辑的优化尝试