在项目中,随着复杂度的提升,客制脚本以及各类SuiteAPP的应用,导致某个对象上挂载的脚本大量增加,最终导致了性能问题。表现在保存单据时时间过长,严重影响人机界面的用户感受。基于此问题,我们开展了NetSuite性能研究。此文是其中一项研究。重点关注UE脚本的开销问题。
本研究的思路是通过试验来揭示UE的调度规律,以找到最佳代码实践。所以,我们设计了一个试验:
•制作3个UE。
•前两个UE分别执行一个特定的逻辑工作。第三个UE合并执行前两个UE的逻辑。在代码头、尾分别记录执行时间。
•比较“分别”执行和“合并”执行的时间。
这个试验的目的是研究:
1. 某个脚本运行时,是否会存在调度的最低成本。
2. 将多脚本合并是否会带来性能提升。
于是我们建立了三个脚本,1_UE, 2_UE分别执行特定的SO字段赋值逻辑,3_UE是前两个的代码合集。
然后,通过观察脚本执行顺序带来的影响。执行顺序有两个:
- 1、2、3,也就是先执行独立逻辑的脚本,再执行合并逻辑的脚本
- 3、1、2,也就是先执行合并逻辑的脚本,再执行独立逻辑的脚本
最后得到的试验数据是:
最后的试验结论:
1. 脚本调度存在250-290毫秒的最低开销。
2.代码合并有影响,但是不大。数据库缓存是性能差异的决定因素。也就是说,代码效率高低是由数据库的Cache机制影响的。这印证了SAFE中所说的“Avoid Loading the Record for Each Search Result”。提升Cache的效率,是用户交互时的重要原则。
如果有任何关于NetSuite的问题,欢迎来谈。邮箱:service@truston.group