diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/schedule.js | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/tools/schedule.js b/tools/schedule.js index 526ebe4..3254a24 100644 --- a/tools/schedule.js +++ b/tools/schedule.js @@ -33,9 +33,9 @@ exports.Queue = function(delayms, maxExport, call){ let prio = job.prio; if (!jobs[prio]){ jobs[prio] = []; - prios.splice(0, Math.abs(bs(prios, prio, (el, ne) => el-ne)), prio); // prios is meant to be sorted least to most, and each job layer is too (by "maximum number of rounds"). + prios.splice(Math.abs(bs(prios, prio, (el, ne) => el-ne)), 0, prio); // prios is meant to be sorted least to most, and each job layer is too (by "maximum number of rounds"). } - jobs[prio].splice(0, Math.abs(bs(jobs[prio], job, (el, ne) => el.maxr() - ne.maxr())), job); + jobs[prio].splice(Math.abs(bs(jobs[prio], job, (el, ne) => el.maxr() - ne.maxr())), 0, job); // These were sorted like this so that getNumOrAll could use [0] or [.length-1] or .pop instead of having to re-sort lists repetitively. this.size += job.data.length; if (open) this.dequeue(); @@ -87,6 +87,7 @@ exports.Queue = function(delayms, maxExport, call){ // Step 2: Start at lowest, and pop all until job.data.length>job.normweight*num (decreasing num as popping and recalc job.normweight). Delete the job. let weightsum = jobq.map(job => job.wt).reduce((acc, cur)=>acc+cur); while (jobq[0] && jobq[0].data.length<(jobq[0].wacc+jobq[0].wt*num/weightsum)){ + num -= jobq[0].data.length; weightsum -= jobq[0].wt; dequeued.push(...jobq.shift().data); } |