2
0
mirror of https://github.com/boostorg/json.git synced 2026-02-09 23:22:27 +00:00
Files
json/bench/results.html
2020-03-30 18:13:27 -07:00

549 lines
22 KiB
HTML

<!DOCTYPE html>
<!--
Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Official repository: https://github.com/vinniefalco/json
-->
<html>
<head>
<font face="arial"/>
</head>
<body>
<h1>Boost.JSON Benchmarks</h1>
<div id="benchmarks">
</div>
<br>
<textarea id="data" cols="60" rows="20" overflow="hidden" onkeyup="autosize(this)">
Parse strings.json,clang x64/sse2,boost (pool),6002
Parse strings.json,clang x64/sse2,boost,3060
Parse strings.json,clang x64/sse2,rapidjson (pool),464
Parse strings.json,clang x64/sse2,rapidjson,433
Parse strings.json,clang x64/sse2,nlohmann,233
Parse integers-32.json,clang x64/sse2,boost (pool),422
Parse integers-32.json,clang x64/sse2,boost,395
Parse integers-32.json,clang x64/sse2,rapidjson (pool),291
Parse integers-32.json,clang x64/sse2,rapidjson,279
Parse integers-32.json,clang x64/sse2,nlohmann,93
Parse integers-64.json,clang x64/sse2,boost (pool),695
Parse integers-64.json,clang x64/sse2,boost,648
Parse integers-64.json,clang x64/sse2,rapidjson (pool),414
Parse integers-64.json,clang x64/sse2,rapidjson,400
Parse integers-64.json,clang x64/sse2,nlohmann,109
Parse twitter.json,clang x64/sse2,boost (pool),506
Parse twitter.json,clang x64/sse2,boost,237
Parse twitter.json,clang x64/sse2,rapidjson (pool),441
Parse twitter.json,clang x64/sse2,rapidjson,277
Parse twitter.json,clang x64/sse2,nlohmann,93
Parse small.json,clang x64/sse2,boost (pool),316
Parse small.json,clang x64/sse2,boost,140
Parse small.json,clang x64/sse2,rapidjson (pool),314
Parse small.json,clang x64/sse2,rapidjson,289
Parse small.json,clang x64/sse2,nlohmann,53
Parse array.json,clang x64/sse2,boost (pool),281
Parse array.json,clang x64/sse2,boost,252
Parse array.json,clang x64/sse2,rapidjson (pool),269
Parse array.json,clang x64/sse2,rapidjson,259
Parse array.json,clang x64/sse2,nlohmann,80
Parse random.json,clang x64/sse2,boost (pool),351
Parse random.json,clang x64/sse2,boost,187
Parse random.json,clang x64/sse2,rapidjson (pool),399
Parse random.json,clang x64/sse2,rapidjson,389
Parse random.json,clang x64/sse2,nlohmann,67
Parse citm_catalog.json,clang x64/sse2,boost (pool),656
Parse citm_catalog.json,clang x64/sse2,boost,288
Parse citm_catalog.json,clang x64/sse2,rapidjson (pool),855
Parse citm_catalog.json,clang x64/sse2,rapidjson,534
Parse citm_catalog.json,clang x64/sse2,nlohmann,113
Parse canada.json,clang x64/sse2,boost (pool),409
Parse canada.json,clang x64/sse2,boost,234
Parse canada.json,clang x64/sse2,rapidjson (pool),361
Parse canada.json,clang x64/sse2,rapidjson,238
Parse canada.json,clang x64/sse2,nlohmann,40
Serialize strings.json,clang x64/sse2,boost (pool),7995
Serialize strings.json,clang x64/sse2,boost,6963
Serialize strings.json,clang x64/sse2,rapidjson (pool),6539
Serialize strings.json,clang x64/sse2,rapidjson,6429
Serialize strings.json,clang x64/sse2,nlohmann,273
Serialize integers-32.json,clang x64/sse2,boost (pool),705
Serialize integers-32.json,clang x64/sse2,boost,704
Serialize integers-32.json,clang x64/sse2,rapidjson (pool),685
Serialize integers-32.json,clang x64/sse2,rapidjson,684
Serialize integers-32.json,clang x64/sse2,nlohmann,557
Serialize integers-64.json,clang x64/sse2,boost (pool),1060
Serialize integers-64.json,clang x64/sse2,boost,1058
Serialize integers-64.json,clang x64/sse2,rapidjson (pool),1021
Serialize integers-64.json,clang x64/sse2,rapidjson,1009
Serialize integers-64.json,clang x64/sse2,nlohmann,760
Serialize twitter.json,clang x64/sse2,boost (pool),1728
Serialize twitter.json,clang x64/sse2,boost,1670
Serialize twitter.json,clang x64/sse2,rapidjson (pool),1063
Serialize twitter.json,clang x64/sse2,rapidjson,1175
Serialize twitter.json,clang x64/sse2,nlohmann,325
Serialize small.json,clang x64/sse2,boost (pool),1715
Serialize small.json,clang x64/sse2,boost,1722
Serialize small.json,clang x64/sse2,rapidjson (pool),844
Serialize small.json,clang x64/sse2,rapidjson,859
Serialize small.json,clang x64/sse2,nlohmann,259
Serialize array.json,clang x64/sse2,boost (pool),481
Serialize array.json,clang x64/sse2,boost,480
Serialize array.json,clang x64/sse2,rapidjson (pool),390
Serialize array.json,clang x64/sse2,rapidjson,390
Serialize array.json,clang x64/sse2,nlohmann,272
Serialize random.json,clang x64/sse2,boost (pool),1194
Serialize random.json,clang x64/sse2,boost,1183
Serialize random.json,clang x64/sse2,rapidjson (pool),673
Serialize random.json,clang x64/sse2,rapidjson,681
Serialize random.json,clang x64/sse2,nlohmann,312
Serialize citm_catalog.json,clang x64/sse2,boost (pool),2266
Serialize citm_catalog.json,clang x64/sse2,boost,2136
Serialize citm_catalog.json,clang x64/sse2,rapidjson (pool),1713
Serialize citm_catalog.json,clang x64/sse2,rapidjson,1735
Serialize citm_catalog.json,clang x64/sse2,nlohmann,766
Serialize canada.json,clang x64/sse2,boost (pool),455
Serialize canada.json,clang x64/sse2,boost,438
Serialize canada.json,clang x64/sse2,rapidjson (pool),258
Serialize canada.json,clang x64/sse2,rapidjson,249
Serialize canada.json,clang x64/sse2,nlohmann,129
Parse strings.json,msvc x64/sse2,boost (pool),5381
Parse strings.json,msvc x64/sse2,boost,2903
Parse strings.json,msvc x64/sse2,rapidjson (pool),337
Parse strings.json,msvc x64/sse2,rapidjson,321
Parse strings.json,msvc x64/sse2,nlohmann,167
Parse integers-32.json,msvc x64/sse2,boost (pool),371
Parse integers-32.json,msvc x64/sse2,boost,345
Parse integers-32.json,msvc x64/sse2,rapidjson (pool),288
Parse integers-32.json,msvc x64/sse2,rapidjson,278
Parse integers-32.json,msvc x64/sse2,nlohmann,84
Parse integers-64.json,msvc x64/sse2,boost (pool),607
Parse integers-64.json,msvc x64/sse2,boost,562
Parse integers-64.json,msvc x64/sse2,rapidjson (pool),411
Parse integers-64.json,msvc x64/sse2,rapidjson,399
Parse integers-64.json,msvc x64/sse2,nlohmann,90
Parse twitter.json,msvc x64/sse2,boost (pool),384
Parse twitter.json,msvc x64/sse2,boost,210
Parse twitter.json,msvc x64/sse2,rapidjson (pool),331
Parse twitter.json,msvc x64/sse2,rapidjson,237
Parse twitter.json,msvc x64/sse2,nlohmann,86
Parse small.json,msvc x64/sse2,boost (pool),253
Parse small.json,msvc x64/sse2,boost,156
Parse small.json,msvc x64/sse2,rapidjson (pool),248
Parse small.json,msvc x64/sse2,rapidjson,188
Parse small.json,msvc x64/sse2,nlohmann,58
Parse array.json,msvc x64/sse2,boost (pool),254
Parse array.json,msvc x64/sse2,boost,229
Parse array.json,msvc x64/sse2,rapidjson (pool),241
Parse array.json,msvc x64/sse2,rapidjson,236
Parse array.json,msvc x64/sse2,nlohmann,74
Parse random.json,msvc x64/sse2,boost (pool),257
Parse random.json,msvc x64/sse2,boost,167
Parse random.json,msvc x64/sse2,rapidjson (pool),302
Parse random.json,msvc x64/sse2,rapidjson,291
Parse random.json,msvc x64/sse2,nlohmann,66
Parse citm_catalog.json,msvc x64/sse2,boost (pool),530
Parse citm_catalog.json,msvc x64/sse2,boost,286
Parse citm_catalog.json,msvc x64/sse2,rapidjson (pool),788
Parse citm_catalog.json,msvc x64/sse2,rapidjson,502
Parse citm_catalog.json,msvc x64/sse2,nlohmann,104
Parse canada.json,msvc x64/sse2,boost (pool),379
Parse canada.json,msvc x64/sse2,boost,220
Parse canada.json,msvc x64/sse2,rapidjson (pool),373
Parse canada.json,msvc x64/sse2,rapidjson,245
Parse canada.json,msvc x64/sse2,nlohmann,37
Serialize strings.json,msvc x64/sse2,boost (pool),6646
Serialize strings.json,msvc x64/sse2,boost,5962
Serialize strings.json,msvc x64/sse2,rapidjson (pool),5775
Serialize strings.json,msvc x64/sse2,rapidjson,5671
Serialize strings.json,msvc x64/sse2,nlohmann,145
Serialize integers-32.json,msvc x64/sse2,boost (pool),728
Serialize integers-32.json,msvc x64/sse2,boost,723
Serialize integers-32.json,msvc x64/sse2,rapidjson (pool),717
Serialize integers-32.json,msvc x64/sse2,rapidjson,720
Serialize integers-32.json,msvc x64/sse2,nlohmann,510
Serialize integers-64.json,msvc x64/sse2,boost (pool),829
Serialize integers-64.json,msvc x64/sse2,boost,819
Serialize integers-64.json,msvc x64/sse2,rapidjson (pool),807
Serialize integers-64.json,msvc x64/sse2,rapidjson,807
Serialize integers-64.json,msvc x64/sse2,nlohmann,608
Serialize twitter.json,msvc x64/sse2,boost (pool),1265
Serialize twitter.json,msvc x64/sse2,boost,1227
Serialize twitter.json,msvc x64/sse2,rapidjson (pool),721
Serialize twitter.json,msvc x64/sse2,rapidjson,791
Serialize twitter.json,msvc x64/sse2,nlohmann,299
Serialize small.json,msvc x64/sse2,boost (pool),1155
Serialize small.json,msvc x64/sse2,boost,1154
Serialize small.json,msvc x64/sse2,rapidjson (pool),645
Serialize small.json,msvc x64/sse2,rapidjson,663
Serialize small.json,msvc x64/sse2,nlohmann,253
Serialize array.json,msvc x64/sse2,boost (pool),460
Serialize array.json,msvc x64/sse2,boost,458
Serialize array.json,msvc x64/sse2,rapidjson (pool),335
Serialize array.json,msvc x64/sse2,rapidjson,352
Serialize array.json,msvc x64/sse2,nlohmann,240
Serialize random.json,msvc x64/sse2,boost (pool),906
Serialize random.json,msvc x64/sse2,boost,910
Serialize random.json,msvc x64/sse2,rapidjson (pool),521
Serialize random.json,msvc x64/sse2,rapidjson,533
Serialize random.json,msvc x64/sse2,nlohmann,278
Serialize citm_catalog.json,msvc x64/sse2,boost (pool),1773
Serialize citm_catalog.json,msvc x64/sse2,boost,1727
Serialize citm_catalog.json,msvc x64/sse2,rapidjson (pool),1482
Serialize citm_catalog.json,msvc x64/sse2,rapidjson,1504
Serialize citm_catalog.json,msvc x64/sse2,nlohmann,858
Serialize canada.json,msvc x64/sse2,boost (pool),371
Serialize canada.json,msvc x64/sse2,boost,351
Serialize canada.json,msvc x64/sse2,rapidjson (pool),254
Serialize canada.json,msvc x64/sse2,rapidjson,246
Serialize canada.json,msvc x64/sse2,nlohmann,104
Parse strings.json,clang x86/sse2,boost (pool),3019
Parse strings.json,clang x86/sse2,boost,2886
Parse strings.json,clang x86/sse2,rapidjson (pool),475
Parse strings.json,clang x86/sse2,rapidjson,441
Parse strings.json,clang x86/sse2,nlohmann,225
Parse integers-32.json,clang x86/sse2,boost (pool),351
Parse integers-32.json,clang x86/sse2,boost,335
Parse integers-32.json,clang x86/sse2,rapidjson (pool),243
Parse integers-32.json,clang x86/sse2,rapidjson,233
Parse integers-32.json,clang x86/sse2,nlohmann,70
Parse integers-64.json,clang x86/sse2,boost (pool),434
Parse integers-64.json,clang x86/sse2,boost,418
Parse integers-64.json,clang x86/sse2,rapidjson (pool),293
Parse integers-64.json,clang x86/sse2,rapidjson,284
Parse integers-64.json,clang x86/sse2,nlohmann,78
Parse twitter.json,clang x86/sse2,boost (pool),440
Parse twitter.json,clang x86/sse2,boost,206
Parse twitter.json,clang x86/sse2,rapidjson (pool),407
Parse twitter.json,clang x86/sse2,rapidjson,245
Parse twitter.json,clang x86/sse2,nlohmann,82
Parse small.json,clang x86/sse2,boost (pool),265
Parse small.json,clang x86/sse2,boost,153
Parse small.json,clang x86/sse2,rapidjson (pool),275
Parse small.json,clang x86/sse2,rapidjson,260
Parse small.json,clang x86/sse2,nlohmann,60
Parse array.json,clang x86/sse2,boost (pool),238
Parse array.json,clang x86/sse2,boost,195
Parse array.json,clang x86/sse2,rapidjson (pool),190
Parse array.json,clang x86/sse2,rapidjson,184
Parse array.json,clang x86/sse2,nlohmann,62
Parse random.json,clang x86/sse2,boost (pool),324
Parse random.json,clang x86/sse2,boost,175
Parse random.json,clang x86/sse2,rapidjson (pool),367
Parse random.json,clang x86/sse2,rapidjson,358
Parse random.json,clang x86/sse2,nlohmann,59
Parse citm_catalog.json,clang x86/sse2,boost (pool),518
Parse citm_catalog.json,clang x86/sse2,boost,279
Parse citm_catalog.json,clang x86/sse2,rapidjson (pool),808
Parse citm_catalog.json,clang x86/sse2,rapidjson,490
Parse citm_catalog.json,clang x86/sse2,nlohmann,100
Parse canada.json,clang x86/sse2,boost (pool),276
Parse canada.json,clang x86/sse2,boost,185
Parse canada.json,clang x86/sse2,rapidjson (pool),345
Parse canada.json,clang x86/sse2,rapidjson,218
Parse canada.json,clang x86/sse2,nlohmann,29
Serialize strings.json,clang x86/sse2,boost (pool),7452
Serialize strings.json,clang x86/sse2,boost,6735
Serialize strings.json,clang x86/sse2,rapidjson (pool),6516
Serialize strings.json,clang x86/sse2,rapidjson,6155
Serialize strings.json,clang x86/sse2,nlohmann,167
Serialize integers-32.json,clang x86/sse2,boost (pool),370
Serialize integers-32.json,clang x86/sse2,boost,370
Serialize integers-32.json,clang x86/sse2,rapidjson (pool),445
Serialize integers-32.json,clang x86/sse2,rapidjson,445
Serialize integers-32.json,clang x86/sse2,nlohmann,176
Serialize integers-64.json,clang x86/sse2,boost (pool),335
Serialize integers-64.json,clang x86/sse2,boost,334
Serialize integers-64.json,clang x86/sse2,rapidjson (pool),336
Serialize integers-64.json,clang x86/sse2,rapidjson,336
Serialize integers-64.json,clang x86/sse2,nlohmann,167
Serialize twitter.json,clang x86/sse2,boost (pool),1157
Serialize twitter.json,clang x86/sse2,boost,1133
Serialize twitter.json,clang x86/sse2,rapidjson (pool),1019
Serialize twitter.json,clang x86/sse2,rapidjson,1007
Serialize twitter.json,clang x86/sse2,nlohmann,231
Serialize small.json,clang x86/sse2,boost (pool),1151
Serialize small.json,clang x86/sse2,boost,1146
Serialize small.json,clang x86/sse2,rapidjson (pool),829
Serialize small.json,clang x86/sse2,rapidjson,852
Serialize small.json,clang x86/sse2,nlohmann,201
Serialize array.json,clang x86/sse2,boost (pool),270
Serialize array.json,clang x86/sse2,boost,269
Serialize array.json,clang x86/sse2,rapidjson (pool),291
Serialize array.json,clang x86/sse2,rapidjson,287
Serialize array.json,clang x86/sse2,nlohmann,165
Serialize random.json,clang x86/sse2,boost (pool),608
Serialize random.json,clang x86/sse2,boost,609
Serialize random.json,clang x86/sse2,rapidjson (pool),543
Serialize random.json,clang x86/sse2,rapidjson,544
Serialize random.json,clang x86/sse2,nlohmann,221
Serialize citm_catalog.json,clang x86/sse2,boost (pool),1442
Serialize citm_catalog.json,clang x86/sse2,boost,1399
Serialize citm_catalog.json,clang x86/sse2,rapidjson (pool),1666
Serialize citm_catalog.json,clang x86/sse2,rapidjson,1647
Serialize citm_catalog.json,clang x86/sse2,nlohmann,510
Serialize canada.json,clang x86/sse2,boost (pool),128
Serialize canada.json,clang x86/sse2,boost,126
Serialize canada.json,clang x86/sse2,rapidjson (pool),152
Serialize canada.json,clang x86/sse2,rapidjson,148
Serialize canada.json,clang x86/sse2,nlohmann,74
Parse strings.json,msvc x86/sse2,boost (pool),2643
Parse strings.json,msvc x86/sse2,boost,2536
Parse strings.json,msvc x86/sse2,rapidjson (pool),393
Parse strings.json,msvc x86/sse2,rapidjson,372
Parse strings.json,msvc x86/sse2,nlohmann,189
Parse integers-32.json,msvc x86/sse2,boost (pool),338
Parse integers-32.json,msvc x86/sse2,boost,311
Parse integers-32.json,msvc x86/sse2,rapidjson (pool),216
Parse integers-32.json,msvc x86/sse2,rapidjson,209
Parse integers-32.json,msvc x86/sse2,nlohmann,65
Parse integers-64.json,msvc x86/sse2,boost (pool),432
Parse integers-64.json,msvc x86/sse2,boost,407
Parse integers-64.json,msvc x86/sse2,rapidjson (pool),277
Parse integers-64.json,msvc x86/sse2,rapidjson,271
Parse integers-64.json,msvc x86/sse2,nlohmann,70
Parse twitter.json,msvc x86/sse2,boost (pool),377
Parse twitter.json,msvc x86/sse2,boost,191
Parse twitter.json,msvc x86/sse2,rapidjson (pool),318
Parse twitter.json,msvc x86/sse2,rapidjson,221
Parse twitter.json,msvc x86/sse2,nlohmann,88
Parse small.json,msvc x86/sse2,boost (pool),235
Parse small.json,msvc x86/sse2,boost,140
Parse small.json,msvc x86/sse2,rapidjson (pool),241
Parse small.json,msvc x86/sse2,rapidjson,225
Parse small.json,msvc x86/sse2,nlohmann,63
Parse array.json,msvc x86/sse2,boost (pool),222
Parse array.json,msvc x86/sse2,boost,179
Parse array.json,msvc x86/sse2,rapidjson (pool),184
Parse array.json,msvc x86/sse2,rapidjson,179
Parse array.json,msvc x86/sse2,nlohmann,63
Parse random.json,msvc x86/sse2,boost (pool),259
Parse random.json,msvc x86/sse2,boost,155
Parse random.json,msvc x86/sse2,rapidjson (pool),278
Parse random.json,msvc x86/sse2,rapidjson,276
Parse random.json,msvc x86/sse2,nlohmann,63
Parse citm_catalog.json,msvc x86/sse2,boost (pool),435
Parse citm_catalog.json,msvc x86/sse2,boost,250
Parse citm_catalog.json,msvc x86/sse2,rapidjson (pool),705
Parse citm_catalog.json,msvc x86/sse2,rapidjson,415
Parse citm_catalog.json,msvc x86/sse2,nlohmann,106
Parse canada.json,msvc x86/sse2,boost (pool),251
Parse canada.json,msvc x86/sse2,boost,172
Parse canada.json,msvc x86/sse2,rapidjson (pool),242
Parse canada.json,msvc x86/sse2,rapidjson,172
Parse canada.json,msvc x86/sse2,nlohmann,29
Serialize strings.json,msvc x86/sse2,boost (pool),6209
Serialize strings.json,msvc x86/sse2,boost,5776
Serialize strings.json,msvc x86/sse2,rapidjson (pool),5877
Serialize strings.json,msvc x86/sse2,rapidjson,5566
Serialize strings.json,msvc x86/sse2,nlohmann,115
Serialize integers-32.json,msvc x86/sse2,boost (pool),430
Serialize integers-32.json,msvc x86/sse2,boost,428
Serialize integers-32.json,msvc x86/sse2,rapidjson (pool),543
Serialize integers-32.json,msvc x86/sse2,rapidjson,542
Serialize integers-32.json,msvc x86/sse2,nlohmann,198
Serialize integers-64.json,msvc x86/sse2,boost (pool),356
Serialize integers-64.json,msvc x86/sse2,boost,356
Serialize integers-64.json,msvc x86/sse2,rapidjson (pool),364
Serialize integers-64.json,msvc x86/sse2,rapidjson,364
Serialize integers-64.json,msvc x86/sse2,nlohmann,210
Serialize twitter.json,msvc x86/sse2,boost (pool),1134
Serialize twitter.json,msvc x86/sse2,boost,1109
Serialize twitter.json,msvc x86/sse2,rapidjson (pool),771
Serialize twitter.json,msvc x86/sse2,rapidjson,757
Serialize twitter.json,msvc x86/sse2,nlohmann,231
Serialize small.json,msvc x86/sse2,boost (pool),1048
Serialize small.json,msvc x86/sse2,boost,1059
Serialize small.json,msvc x86/sse2,rapidjson (pool),676
Serialize small.json,msvc x86/sse2,rapidjson,683
Serialize small.json,msvc x86/sse2,nlohmann,219
Serialize array.json,msvc x86/sse2,boost (pool),304
Serialize array.json,msvc x86/sse2,boost,302
Serialize array.json,msvc x86/sse2,rapidjson (pool),249
Serialize array.json,msvc x86/sse2,rapidjson,249
Serialize array.json,msvc x86/sse2,nlohmann,158
Serialize random.json,msvc x86/sse2,boost (pool),649
Serialize random.json,msvc x86/sse2,boost,643
Serialize random.json,msvc x86/sse2,rapidjson (pool),418
Serialize random.json,msvc x86/sse2,rapidjson,419
Serialize random.json,msvc x86/sse2,nlohmann,223
Serialize citm_catalog.json,msvc x86/sse2,boost (pool),1537
Serialize citm_catalog.json,msvc x86/sse2,boost,1482
Serialize citm_catalog.json,msvc x86/sse2,rapidjson (pool),1512
Serialize citm_catalog.json,msvc x86/sse2,rapidjson,1495
Serialize citm_catalog.json,msvc x86/sse2,nlohmann,592
Serialize canada.json,msvc x86/sse2,boost (pool),168
Serialize canada.json,msvc x86/sse2,boost,164
Serialize canada.json,msvc x86/sse2,rapidjson (pool),113
Serialize canada.json,msvc x86/sse2,rapidjson,111
Serialize canada.json,msvc x86/sse2,nlohmann,58
</textarea>
<script>
var Width = 600;
function autosize (f) {
if (f.scrollHeight > f.clientHeight) {
f.style.height = f.scrollHeight + "px";
}
}
// Draw a single bar chart representing
// results for one platform and architecture
function draw_chart(ctx, title, rows, mbsMax) {
var xMax = Math.max(...Object.values(rows));
// gray separator
ctx.beginPath();
ctx.strokeStyle = "#A0A0A0";
ctx.moveTo(0, 0.5);
ctx.lineTo(Width, 0.5);
ctx.stroke();
ctx.translate(0, 28);
// title
ctx.textAlign = "left";
ctx.fillStyle = "#000000";
ctx.font = 'bold 16px sans-serif';
ctx.fillText(title, 0, 0);
ctx.translate(0, 26);
// chart rows
Object.entries(rows).forEach(([name, mbs]) =>
{
var dy = 4;
ctx.textAlign = "left";
ctx.fillStyle = "#000000";
ctx.font = '14px sans-serif';
ctx.fillText(name, 0, 0);
var xMbs = 195;
if(name.startsWith("boost"))
ctx.fillStyle = "#eb342a";
else
ctx.fillStyle = "#909090";
var w = (Width - 170) * mbs / mbsMax
if(w < xMbs - 120)
w = xMbs - 120;
ctx.fillRect(130, -20+dy, w, 20);
ctx.textAlign = "right";
ctx.font = '13px sans-serif';
ctx.fillStyle = "#000000";
ctx.fillText(mbs + " MB/s", xMbs + 1, 1);
ctx.fillStyle = "#ffffff";
ctx.fillText(mbs + " MB/s", xMbs, 0);
ctx.translate(0, 24);
});
// gray separator
ctx.translate(0, -4);
ctx.beginPath();
ctx.strokeStyle = "#A0A0A0";
ctx.moveTo(0, 0.5);
ctx.lineTo(Width, 0.5);
ctx.stroke();
}
// Draw multiple bar charts, one
// for each platform and architecture
function draw_charts(ctx, tab, mbsMax) {
// top margin
ctx.translate(0, 16);
// draw each chart
Object.entries(tab).forEach(([name, rows]) =>
{
draw_chart(ctx, name, rows, mbsMax);
});
// bottom margin
ctx.translate(0, 16);
}
function measure_and_draw(canvas, tab) {
mbsMax = 0;
Object.entries(tab).forEach(([name, rows]) =>
{
mbsMax = Math.max(mbsMax, ...Object.values(rows));
});
var LeftMargin = 48;
// Measure the height needed
canvas.width = Width;
canvas.height = 30000;
var ctx = canvas.getContext("2d");
ctx.save();
draw_charts(ctx, tab);
var tx = ctx.getTransform();
var height = tx["f"];
// Resize the canvas to fit
canvas.width = LeftMargin + Width + 20;
canvas.height = height;
// Make everything opaque
ctx.fillStyle = "#FFFFFF";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.translate(LeftMargin, 0);
draw_charts(ctx, tab, mbsMax);
ctx.restore();
}
function update()
{
var tab = new Object();
var lines = data.value.split('\n');
for (var i = 0; i < lines.length; i++)
{
if(lines[i].length == 0)
continue;
items = lines[i].split(',');
var title = items[0]
var target = items[1];
var name = items[2];
var mbs = items[3];
if(! (title in tab))
tab[title] = new Object();
if(! (target in tab[title]))
tab[title][target] = new Object();
var set = tab[title][target];
if(! (name in set))
set[name] = new Object();
set[name] = mbs;
}
benchmarks.innerHTML = "";
Object.entries(tab).forEach(([title, charts]) =>
{
benchmarks.innerHTML +=
"<h2>" + title + "</h2>" +
"<canvas id=\"" + title + "\" width=\"800\" height=\"600\">";
});
Object.entries(tab).forEach(([title, charts]) =>
{
measure_and_draw(document.getElementById(title), charts)
});
}
data.oninput = function()
{
update();
}
update();
</script>
</body>
</html>