Skip to content

Commit

Permalink
Merge branch 'master' into fix_boxplot_width
Browse files Browse the repository at this point in the history
  • Loading branch information
ffreyer authored Oct 21, 2024
2 parents 55a7a35 + 6b26779 commit 520747f
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 26 deletions.
7 changes: 6 additions & 1 deletion .github/workflows/compilation-benchmark.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,9 @@ jobs:
GITHUB_TOKEN: ${{ secrets.BENCHMARK_KEY }}
PR_NUMBER: ${{ github.event.number }}
run: >
DISPLAY=:0 xvfb-run -s '-screen 0 1024x768x24' julia --project=./metrics/ttfp/ ./metrics/ttfp/run-benchmark.jl ${{ matrix.package }} 7 ${{ github.event.pull_request.base.ref }}
DISPLAY=:0 xvfb-run -s '-screen 0 1024x768x24' julia --project=./metrics/ttfp/ ./metrics/ttfp/run-benchmark.jl ${{ matrix.package }} 20 ${{ github.event.pull_request.base.ref }}
- name: Upload measurements as artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.package }}
path: ./json
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
- Changed image, heatmap and surface picking indices to correctly index the relevant matrix arguments. [#4459](https://github.com/MakieOrg/Makie.jl/pull/4459)
- Improved performance of `record` by avoiding unnecessary copying in common cases [#4475](https://github.com/MakieOrg/Makie.jl/pull/4475).
- Fix usage of `AggMean()` and other aggregations operating on 3d data for `datashader` [#4346](https://github.com/MakieOrg/Makie.jl/pull/4346).
- Use polys for axis3 [#4463](https://github.com/MakieOrg/Makie.jl/pull/4463).
- Changed default for `circular_rotation` in Camera3D to false, so that the camera doesn't change rotation direction anymore [4492](https://github.com/MakieOrg/Makie.jl/pull/4492)
- Fixed `pick(scene, rect2)` in WGLMakie [#4488](https://github.com/MakieOrg/Makie.jl/pull/4488)

Expand Down
2 changes: 2 additions & 0 deletions CairoMakie/test/svg_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ end
@testset "SVG rasterization" begin
@test svg_isnt_rasterized(Scene())
@test svg_isnt_rasterized(begin f = Figure(); Axis(f[1, 1]); f end)
@test svg_isnt_rasterized(begin f = Figure(); Axis3(f[1, 1]); f end)
@test svg_isnt_rasterized(begin f = Figure(); PolarAxis(f[1, 1]); f end)
@test svg_isnt_rasterized(scatter(1:3))
@test svg_isnt_rasterized(lines(1:3))
@test svg_isnt_rasterized(heatmap(rand(5, 5)))
Expand Down
32 changes: 26 additions & 6 deletions metrics/ttfp/benchmark-ttfp.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ set_theme!(size=(800, 600))
create_time = @ctime fig = scatter(1:4; color=1:4, colormap=:turbo, markersize=20, visible=true)
display_time = @ctime colorbuffer(fig; px_per_unit=1)

using BenchmarkTools
using BenchmarkTools.JSON
using JSON
using Pkg
using Statistics: median

project_name = basename(dirname(Pkg.project().path))

Expand All @@ -31,13 +31,33 @@ old = isfile(result) ? JSON.parse(read(result, String)) : [[], [], [], [], []]
@show [t_using, create_time, display_time]
push!.(old[1:3], [t_using, create_time, display_time])

b1 = @benchmark fig = scatter(1:4; color=1:4, colormap=:turbo, markersize=20, visible=true)
b2 = @benchmark colorbuffer(fig; px_per_unit=1)
macro simple_median_time(expr)
time_expr = quote
local elapsedtime = time_ns()
$expr
elapsedtime = time_ns() - elapsedtime
Float64(elapsedtime)
end

quote
times = Float64[]
for i in 1:101
t = Core.eval(Main, $(QuoteNode(time_expr)))
if i > 1
push!(times, t)
end
end
median(times)
end
end
@time "creating figure" figure_time = @simple_median_time fig = scatter(1:4; color=1:4, colormap=:turbo, markersize=20, visible=true)
fig = scatter(1:4; color=1:4, colormap=:turbo, markersize=20, visible=true)
@time "colorbuffer" colorbuffer_time = @simple_median_time colorbuffer(fig; px_per_unit=1)

using Statistics

push!(old[4], mean(b1.times))
push!(old[5], mean(b2.times))
push!(old[4], figure_time)
push!(old[5], colorbuffer_time)

open(io-> JSON.print(io, old), result, "w")

Expand Down
16 changes: 12 additions & 4 deletions metrics/ttfp/run-benchmark.jl
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,10 @@ using Random

function run_benchmarks(projects; n=n_samples)
benchmark_file = joinpath(@__DIR__, "benchmark-ttfp.jl")
for project in shuffle!(repeat(projects; outer=n))
# go A, B, A, B, A, etc.
for project in repeat(projects, n)
println(basename(project))
run(`$(Base.julia_cmd()) --startup-file=no --project=$(project) $benchmark_file $Package`)
project_name = basename(project)
end
return
end
Expand Down Expand Up @@ -221,13 +222,13 @@ end
pkgs = NamedTuple[(; path="./MakieCore"), (; path="."), (; path="./$Package")]
# cd("dev/Makie")
Pkg.develop(pkgs)
Pkg.add([(; name="BenchmarkTools")])
Pkg.add([(; name="JSON")])

@time Pkg.precompile()

project2 = make_project_folder(base_branch)
Pkg.activate(project2)
pkgs = [(; rev=base_branch, name="MakieCore"), (; rev=base_branch, name="Makie"), (; rev=base_branch, name="$Package"), (;name="BenchmarkTools")]
pkgs = [(; rev=base_branch, name="MakieCore"), (; rev=base_branch, name="Makie"), (; rev=base_branch, name="$Package"), (;name="JSON")]
Package == "WGLMakie" && push!(pkgs, (; name="Electron"))
Pkg.add(pkgs)
@time Pkg.precompile()
Expand All @@ -249,3 +250,10 @@ else
@info("Not commenting, no PR found")
println(update_comment(COMMENT_TEMPLATE, Package, benchmark_rows))
end

mkdir("json")
for p in [project1, project2]
name = basename(p)
file = "$name-benchmark.json"
mv(file, joinpath("json", file))
end
43 changes: 28 additions & 15 deletions src/makielayout/blocks/axis3d.jl
Original file line number Diff line number Diff line change
Expand Up @@ -664,29 +664,42 @@ function add_panel!(scene, ax, dim1, dim2, dim3, limits, min3)
string((:x, :y, :z)[dim2]) * string(sym))
attr(sym) = getproperty(ax, dimsym(sym))

vertices = lift(limits, min3) do lims, mi3

rect = lift(limits) do lims
mi = minimum(lims)
ma = maximum(lims)
Polygon([
Point2(mi[dim1], mi[dim2]),
Point2(ma[dim1], mi[dim2]),
Point2(ma[dim1], ma[dim2]),
Point2(mi[dim1], ma[dim2])
])
end

v3 = if mi3
mi[dim3] + 0.005 * (mi[dim3] - ma[dim3])
else
ma[dim3] + 0.005 * (ma[dim3] - mi[dim3])
end
plane_offset = lift(limits, min3) do lims, mi3
mi = minimum(lims)
ma = maximum(lims)

p1 = dim3point(dim1, dim2, dim3, mi[dim1], mi[dim2], v3)
p2 = dim3point(dim1, dim2, dim3, mi[dim1], ma[dim2], v3)
p3 = dim3point(dim1, dim2, dim3, ma[dim1], ma[dim2], v3)
p4 = dim3point(dim1, dim2, dim3, ma[dim1], mi[dim2], v3)
[p1, p2, p3, p4]
mi3 ? mi[dim3] : ma[dim3]
end

faces = [1 2 3; 3 4 1]
plane = Symbol((:x, :y, :z)[dim1], (:x, :y, :z)[dim2])

panel = mesh!(scene, vertices, faces, shading = NoShading, inspectable = false,
panel = poly!(scene, rect, inspectable = false,
xautolimits = false, yautolimits = false, zautolimits = false,
color = attr(:panelcolor), visible = attr(:panelvisible))
color = attr(:panelcolor), visible = attr(:panelvisible),
strokecolor = :transparent, strokewidth = 0,
transformation = (plane, 0),
)

on(plane_offset) do offset
translate!(
panel,
dim3 == 1 ? offset : zero(offset),
dim3 == 2 ? offset : zero(offset),
dim3 == 3 ? offset : zero(offset),
)
end

return panel
end

Expand Down

0 comments on commit 520747f

Please sign in to comment.