Mercurial > repos > public > sbplib_julia
annotate benchmark/run_and_view.jl @ 1180:37f29a3a78dc tooling/benchmarks
Add some comments
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 27 Jan 2023 11:31:07 +0100 |
parents | d6038ceba882 |
children | f49bac53e72b |
rev | line source |
---|---|
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
1 import PkgBenchmark |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
2 import Markdown |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
3 import Mustache |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
4 import Dates |
1172 | 5 |
6 import Sbplib | |
7 | |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
8 const sbplib_root = splitpath(pathof(Sbplib))[1:end-2] |> joinpath |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
9 const results_dir = mkpath(joinpath(sbplib_root, "benchmark/results")) |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
10 const template_path = joinpath(sbplib_root, "benchmark/result.tmpl") |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
11 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
12 function main() |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
13 r = run_benchmark() |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
14 file_path = write_result_html(r) |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
15 open_in_default_browser(file_path) |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
16 end |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
17 |
1180 | 18 # TBD: What parts are PkgBenchmark contributing? Can it be stripped out? Can we replace the html output part? |
19 | |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
20 function run_benchmark() |
1176
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
21 r = PkgBenchmark.benchmarkpkg(Sbplib) |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
22 |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
23 commit = hg_id() |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
24 |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
25 return PkgBenchmark.BenchmarkResults( |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
26 "Sbplib.jl", |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
27 commit, |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
28 r.benchmarkgroup, |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
29 r.date, |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
30 r.julia_commit, |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
31 r.vinfo, |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
32 r.benchmarkconfig, |
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
33 ) |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
34 end |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
35 |
1177
68445e87fa93
Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents:
1176
diff
changeset
|
36 function write_result_html(io, r) |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
37 iobuffer = IOBuffer() |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
38 PkgBenchmark.export_markdown(iobuffer, r) |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
39 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
40 parsed_md = Markdown.parse(String(take!(iobuffer))) |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
41 content = Markdown.html(parsed_md) |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
42 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
43 template = Mustache.load(template_path) |
1177
68445e87fa93
Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents:
1176
diff
changeset
|
44 |
68445e87fa93
Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents:
1176
diff
changeset
|
45 dt = Dates.format(PkgBenchmark.date(r), "yyyy-mm-dd HH:MM:SS") |
68445e87fa93
Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents:
1176
diff
changeset
|
46 Mustache.render(io, template, Dict("title"=>dt, "content"=>content)) |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
47 end |
1180 | 48 ## Fix the writing of the commit, it chops off all the important info |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
49 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
50 function write_result_html(r) |
1179
d6038ceba882
Better file names för results
Jonatan Werpers <jonatan@werpers.com>
parents:
1178
diff
changeset
|
51 dt = Dates.format(PkgBenchmark.date(r), "yyyy-mm-dd HHMMSS") |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
52 file_path = joinpath(results_dir, dt*".html") |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
53 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
54 open(file_path, "w") do io |
1177
68445e87fa93
Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents:
1176
diff
changeset
|
55 write_result_html(io, r) |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
56 end |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
57 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
58 return file_path |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
59 end |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
60 |
1175
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
61 function hg_id() |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
62 cmd = Cmd(`hg id`, dir=sbplib_root) |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
63 return readchomp(addenv(cmd, "HGPLAIN"=>"")) |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
64 end |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
65 |
1178
5c34dfc73b37
Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents:
1177
diff
changeset
|
66 function hg_rev() |
5c34dfc73b37
Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents:
1177
diff
changeset
|
67 cmd = Cmd(`hg id -i`, dir=sbplib_root) |
5c34dfc73b37
Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents:
1177
diff
changeset
|
68 return readchomp(addenv(cmd, "HGPLAIN"=>"")) |
5c34dfc73b37
Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents:
1177
diff
changeset
|
69 end |
5c34dfc73b37
Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents:
1177
diff
changeset
|
70 |
1175
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
71 function hg_update(rev) |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
72 cmd = Cmd(`hg update --check $rev`, dir=sbplib_root) |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
73 run(addenv(cmd, "HGPLAIN"=>"")) |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
74 end |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
75 |
1172 | 76 # From Pluto.jl/src/webserver/WebServer.jl (2023-01-24) |
77 function open_in_default_browser(url::AbstractString)::Bool | |
78 try | |
79 if Sys.isapple() | |
80 Base.run(`open $url`) | |
81 true | |
82 elseif Sys.iswindows() || detectwsl() | |
83 Base.run(`powershell.exe Start "'$url'"`) | |
84 true | |
85 elseif Sys.islinux() | |
86 Base.run(`xdg-open $url`) | |
87 true | |
88 else | |
89 false | |
90 end | |
91 catch ex | |
92 false | |
93 end | |
94 end | |
95 | |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
96 main |
1172 | 97 |
98 # TODO: Change color of codeblocks | |
99 # TODO: Change width of tables and code blocks |