benchmarker is probably the wrong term, but life is hard.
Seems mostly the thing that effects JS is CPU. To test:
https://blogs.msdn.microsoft.com/vijaysk/2012/10/26/tools-to-simulate-cpu-memory-disk-load/
http://download.sysinternals.com/files/CPUSTRES.zip
function Benchmarker() {
var times = []; // records the time at each interval check
var interval = 1000; // the amount of time (in msec) to wait between time checking
var warningVarianceThreshold = 100; // the amount of time (in msec) as a variance from the expected time that counts as a warning
var alertVarianceThreshold = 150; // the amount of time (in msec) as a variance from the expected time that counts as an alert
var warningCount = 0;
var alertCount = 0;
var stopFlag = false;
var intervalCallback = null; // a callback function called each time the interval occurs
// this method will run at a given interval and record the time
// will compare the current time to the last run time and establish a variance to the expected difference
function checkInterval() {
if (stopFlag) {
return;
}
var d = new Date();
var currentSeconds = d.getTime();
if (times.length > 0) {
var lastSeconds = times[times.length - 1];
var timeChanged = currentSeconds - lastSeconds;
//console.log(currentSeconds + "; " + timeChanged);
var variance = Math.abs(timeChanged - interval);
if (variance >= alertVarianceThreshold) {
alertCount++;
} else if (variance >= warningVarianceThreshold) {
warningCount++;
}
if (typeof intervalCallback === "function") {
var data = getData();
data = $.extend(data, { lastVariance: variance });
intervalCallback(data);
}
} else {
//console.log(currentSeconds);
}
times.push(currentSeconds);
setTimeout(function () { checkInterval(); }, interval);
}
this.getData = function() {
var data = { interval: interval, intervalCount:times.length, warningVarianceThreshold: warningVarianceThreshold, alertVarianceThreshold: alertVarianceThreshold, warningCount: warningCount, alertCount: alertCount };
return data;
}
this.start = function () {
checkInterval();
}
this.stop = function () {
stopFlag = true;
}
this.getAlertCount = function () {
return alertCount;
}
this.getWarningCount = function () {
return warningCount;
}
this.setIntervalCallback = function(callback) {
intervalCallback = callback;
}
}
No comments:
Post a Comment