性能服务器脚本

问题描述:

我有多个customerKey值分配给一个数值的表;我写了一个脚本,其中每行数据扫描整个表以查找分配给当前customerKey的所有值并返回最高值;性能服务器脚本

我有一个性能问题 - 脚本进程每秒大约10条记录 - 任何想法如何改进或者可能提出一个替代解决方案plesae?

function getLastest() { 
    var date = app.models.magicMain.newQuery(); 
    var date_all = date.run(); 

    date_all.forEach(function(e) { // for every row of date_all 
     var temp = date_all.filter(function(x) { 
      return x.SubscriberKey === e.SubscriberKey; // find matching records for the current x.SubscriberKey 
     }); 
     var dates = []; 
     temp.forEach(function(z) { // get all matching "dates" 
      dates.push(z.Date); 
     }); 
     var finalValue = dates.reduce(function(a, b) { // get highest dates value (integer) 
      return Math.max(a, b); 
     }); 

     var record = app.models.TempOperatoins.newRecord(); // save results to DB 
     record.email = e.SubscriberKey.toString() + " " + finalValue.toString(); 
     app.saveRecords([record]); 
    }); 
} 

我将是唯一的建议补充:

变种recordstosave = [];

在你的函数的顶部。 然后用recordstosave.push(记录)替换app.saveRecords([record])。

最后在你的foreach函数之外做app.saveRecords(recordstosave)。

我看到了主要的处理时间改进,而不是单独在循环内保存每条记录。