1 | <!DOCTYPE html>
|
---|
2 | <html lang="en">
|
---|
3 | <head>
|
---|
4 | <meta charset="UTF-8" />
|
---|
5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
---|
6 | <meta http-equiv="X-UA-Compatible" />
|
---|
7 | <script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0/dist/Chart.min.js"></script>
|
---|
8 | <style>
|
---|
9 | .wrapper {
|
---|
10 | display: flex;
|
---|
11 | flex: wrap;
|
---|
12 | order: row;
|
---|
13 | }
|
---|
14 | </style>
|
---|
15 | <title>Histogram data access with coordinated ommissions</title>
|
---|
16 | </head>
|
---|
17 | <body>
|
---|
18 | <div style="max-width: 800px;">
|
---|
19 | <canvas id="chart1591690005593" width="16" height="9"></canvas>
|
---|
20 | </div>
|
---|
21 | <script>
|
---|
22 | const format = num => {
|
---|
23 | const chunked = [];
|
---|
24 | String(num)
|
---|
25 | .split("")
|
---|
26 | .reverse()
|
---|
27 | .forEach((char, index) => {
|
---|
28 | if (index % 3 === 0) {
|
---|
29 | chunked.unshift([char]);
|
---|
30 | } else {
|
---|
31 | chunked[0].unshift(char);
|
---|
32 | }
|
---|
33 | });
|
---|
34 |
|
---|
35 | return chunked.map(chunk => chunk.join("")).join(" ");
|
---|
36 | };
|
---|
37 | const ctx1591690005593 = document
|
---|
38 | .getElementById("chart1591690005593")
|
---|
39 | .getContext("2d");
|
---|
40 | const chart1591690005593 = new Chart(ctx1591690005593, {
|
---|
41 | type: "bar",
|
---|
42 | data: {
|
---|
43 | labels: [
|
---|
44 | "Int32Histogram",
|
---|
45 | "Int32Histogram no correction needed",
|
---|
46 | "PackedHistogram",
|
---|
47 | "PackedHistogram no correction needed",
|
---|
48 | "WASM Int32Histogram",
|
---|
49 | "WASM Int32Histogram no correction needed",
|
---|
50 | "WASM PackedHistogram",
|
---|
51 | "WASM PackedHistogram no correction needed"
|
---|
52 | ],
|
---|
53 | datasets: [
|
---|
54 | {
|
---|
55 | data: [
|
---|
56 | 2086578,
|
---|
57 | 21949158,
|
---|
58 | 223216,
|
---|
59 | 1457974,
|
---|
60 | 10277634,
|
---|
61 | 24244177,
|
---|
62 | 700885,
|
---|
63 | 3736003
|
---|
64 | ],
|
---|
65 | backgroundColor: [
|
---|
66 | "rgba(63, 142, 252, 0.8)",
|
---|
67 | "rgba(116, 165, 127, 0.8)",
|
---|
68 | "rgba(158, 206, 154, 0.8)",
|
---|
69 | "rgba(58, 175, 185, 0.8)",
|
---|
70 | "rgba(79, 124, 172, 0.8)",
|
---|
71 | "rgba(113, 128, 172, 0.8)",
|
---|
72 | "rgba(182, 140, 184, 0.8)",
|
---|
73 | "rgba(219, 108, 121, 0.8)"
|
---|
74 | ],
|
---|
75 | borderColor: [
|
---|
76 | "rgba(63, 142, 252, 1)",
|
---|
77 | "rgba(116, 165, 127, 1)",
|
---|
78 | "rgba(158, 206, 154, 1)",
|
---|
79 | "rgba(58, 175, 185, 1)",
|
---|
80 | "rgba(79, 124, 172, 1)",
|
---|
81 | "rgba(113, 128, 172, 1)",
|
---|
82 | "rgba(182, 140, 184, 1)",
|
---|
83 | "rgba(219, 108, 121, 1)"
|
---|
84 | ],
|
---|
85 | borderWidth: 1
|
---|
86 | }
|
---|
87 | ]
|
---|
88 | },
|
---|
89 | options: {
|
---|
90 | legend: {
|
---|
91 | display: false
|
---|
92 | },
|
---|
93 | title: {
|
---|
94 | display: true,
|
---|
95 | text: "Histogram data access with coordinated ommissions",
|
---|
96 | fontSize: 16,
|
---|
97 | padding: 20
|
---|
98 | },
|
---|
99 | tooltips: {
|
---|
100 | callbacks: {
|
---|
101 | label: tooltipItem => {
|
---|
102 | return format(tooltipItem.yLabel) + " ops/s";
|
---|
103 | }
|
---|
104 | }
|
---|
105 | },
|
---|
106 | scales: {
|
---|
107 | yAxes: [
|
---|
108 | {
|
---|
109 | gridLines: {
|
---|
110 | color: "rgba(127, 127, 127, 0.2)"
|
---|
111 | },
|
---|
112 | scaleLabel: {
|
---|
113 | display: true,
|
---|
114 | labelString: "Operations per second"
|
---|
115 | },
|
---|
116 | ticks: {
|
---|
117 | beginAtZero: true,
|
---|
118 | callback: format
|
---|
119 | }
|
---|
120 | }
|
---|
121 | ],
|
---|
122 | xAxes: [
|
---|
123 | {
|
---|
124 | gridLines: {
|
---|
125 | color: "rgba(127, 127, 127, 0.2)"
|
---|
126 | },
|
---|
127 | maxBarThickness: 150
|
---|
128 | }
|
---|
129 | ]
|
---|
130 | }
|
---|
131 | }
|
---|
132 | });
|
---|
133 | </script>
|
---|
134 | </body>
|
---|
135 | </html>
|
---|