forked from mleibman/SlickGrid
-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathmodel benchmarks.html
110 lines (92 loc) · 2.51 KB
/
model benchmarks.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<!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>