cccc/static/sg/tests/model benchmarks.html
2018-12-04 09:58:47 +01:00

111 lines
2.8 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>SlickGrid Model Benchmark</title>
</head>
<body>
<script src="../lib/jquery-1.7.min.js"></script>
<script src="../slick.core.js"></script>
<script src="../slick.dataview.js"></script>
<script src="../slick.groupitemmetadataprovider.js"></script>
<script>
function filter(item, args) {
// simulate a more expensive filer
var matches = 0;
if (item.title.indexOf("ask") != -1) matches++;
for (var j = 0; j < 5; j++)
matches += Math.random();
if (item.percentComplete >= args) {
return true;
}
return false;
}
var data = [];
for (var i = 0; i < 300000; i++) {
var d = (data[i] = {});
d["id"] = i;
d["title"] = "Task " + i;
d["percentComplete"] = i % 100;
d["duration"] = Math.round(Math.random() * 14);
}
var dv = new Slick.Data.DataView({inlineFilters: true});
dv.beginUpdate();
dv.setItems(data);
dv.setFilter(filter);
dv.setFilterArgs(0);
//dv.setPagingOptions({pageSize:25});
dv.setGrouping([
{
getter: "duration",
formatter: function (g) {
return "Duration: " + g.value + " <span style='color:green'>(" + g.count + " items)</span>";
},
aggregators: [
new Slick.Data.Aggregators.Avg("percentComplete"),
new Slick.Data.Aggregators.Sum("cost")
],
aggregateCollapsed: true,
aggregateChildGroups: true
},
{
getter: "effortDriven",
formatter: function (g) {
return "Effort-Driven: " + (g.value ? "True" : "False") + " <span style='color:green'>(" + g.count + " items)</span>";
},
aggregators: [
new Slick.Data.Aggregators.Avg("percentComplete"),
new Slick.Data.Aggregators.Sum("cost")
],
aggregateCollapsed: false
}
]);
dv.endUpdate();
console.time("total");
console.time("narrow");
for (var i = 0; i <= 100; i += 5) {
dv.setFilterArgs(i);
dv.setRefreshHints({
ignoreDiffsBefore:200,
ignoreDiffsAfter:300,
isFilterNarrowing:true
});
dv.refresh();
//console.log(dv.getLength());
}
console.timeEnd("narrow");
console.time("expand");
for (var i = 100; i > 0; i -= 5) {
dv.setFilterArgs(i);
dv.setRefreshHints({
ignoreDiffsBefore:200,
ignoreDiffsAfter:300,
isFilterExpanding:true
});
dv.refresh();
//console.log(dv.getLength());
}
console.timeEnd("expand");
console.timeEnd("total");
</script>
</body>
</html>