性能服务器脚本
问题描述:
我有多个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)。
我看到了主要的处理时间改进,而不是单独在循环内保存每条记录。