Skip to content

Instantly share code, notes, and snippets.

@nmaxcom
Last active March 1, 2018 06:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nmaxcom/ef33fdd559d26ebe6503047a603ff3fc to your computer and use it in GitHub Desktop.
Save nmaxcom/ef33fdd559d26ebe6503047a603ff3fc to your computer and use it in GitHub Desktop.
weakPoint algo testing (http://jsbench.github.io/#ef33fdd559d26ebe6503047a603ff3fc) #jsbench #jsperf
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>weakPoint algo testing</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script>
<script src="./suite.js"></script>
</head>
<body>
<h1>Open the console to view the results</h1>
<h2><code>cmd + alt + j</code> or <code>ctrl + alt + j</code></h2>
</body>
</html>
"use strict";
(function (factory) {
if (typeof Benchmark !== "undefined") {
factory(Benchmark);
} else {
factory(require("benchmark"));
}
})(function (Benchmark) {
var suite = new Benchmark.Suite;
suite.add("function weakPoint(matrix) {", function () {
function weakPoint(matrix) {
var rowPoints = [],
colPoints = [];
for (const arr of matrix) {
rowPoints.push(arr.reduce((acc, curr) => acc + curr));
arr.map((val, i) => (colPoints[i] === undefined ? (colPoints[i] = val) : (colPoints[i] += val)));
}
const firstLowest = array => array.indexOf(Math.min(...array));
return [firstLowest(rowPoints), firstLowest(colPoints)];
}
weakPoint([
[7, 2, 4, 2, 8],
[2, 8, 1, 1, 7],
[3, 8, 6, 2, 4],
[2, 5, 2, 9, 1],
[6, 6, 5, 4, 5]
]);
});
suite.add("const calcCosts = matrix => matrix.map((row, index) => ({index, cost : row.reduce((a,b) => a + b)})).sort((a,b)=> a.cost - b.cost)[0];", function () {
const calcCosts = matrix => matrix.map((row, index) => ({index, cost : row.reduce((a,b) => a + b)})).sort((a,b)=> a.cost - b.cost)[0];
const transoneMatrix = matrix => matrix.map((_, i) => matrix.map(e => e[i]));
function weakPoint(matrix){
return [calcCosts(matrix).index, calcCosts(transoneMatrix(matrix)).index]
}
weakPoint([
[7, 2, 4, 2, 8],
[2, 8, 1, 1, 7],
[3, 8, 6, 2, 4],
[2, 5, 2, 9, 1],
[6, 6, 5, 4, 5]
]);
});
suite.on("cycle", function (evt) {
console.log(" - " + evt.target);
});
suite.on("complete", function (evt) {
console.log(new Array(30).join("-"));
var results = evt.currentTarget.sort(function (a, b) {
return b.hz - a.hz;
});
results.forEach(function (item) {
console.log((idx + 1) + ". " + item);
});
});
console.log("weakPoint algo testing");
console.log(new Array(30).join("-"));
suite.run();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment