fix args expansion - add more features #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
@carstenbauer, thanks for this attempt, I'm also interested in an automated allocations reporting tool.
ciconfiguration;@timetrackedmacro (current master fails the following):By the way, should the repo be renamed to
TimerOutputsTracked.jl?Example usage (it is now trivial to focus on reducing allocations, and the process in non-intrusive):
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Time Allocations ─────────────────────── ──────────────────────── Tot / % measured: 1.30s / 23.6% 6.23MiB / 99.4% Section ncalls time %tot avg alloc %tot avg ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── lineplot at ~/.julia/dev/UnicodePlots.jl/src/interface/lineplot.jl:78 1 307ms 100.0% 307ms 6.20MiB 100.0% 6.20MiB #lineplot#150 at ~/.julia/dev/UnicodePlots.jl/src/interface/lineplot.jl:78 1 307ms 100.0% 307ms 6.19MiB 99.9% 6.19MiB lineplot at ~/.julia/dev/UnicodePlots.jl/src/interface/lineplot.jl:67 1 306ms 99.9% 306ms 6.19MiB 99.8% 6.19MiB lineplot at ~/.julia/dev/UnicodePlots.jl/src/interface/lineplot.jl:67 1 306ms 99.9% 306ms 6.18MiB 99.8% 6.18MiB #lineplot#149 at ~/.julia/dev/UnicodePlots.jl/src/interface/lineplot.jl:67 1 306ms 99.9% 306ms 6.17MiB 99.7% 6.17MiB lineplot! at ~/.julia/dev/UnicodePlots.jl/src/interface/lineplot.jl:80 1 306ms 99.7% 306ms 6.14MiB 99.2% 6.14MiB #lineplot!#151 at ~/.julia/dev/UnicodePlots.jl/src/interface/lineplot.jl:80 1 306ms 99.7% 306ms 6.14MiB 99.1% 6.14MiB lines! at ~/.julia/dev/UnicodePlots.jl/src/plot.jl:510 1 305ms 99.6% 305ms 6.13MiB 98.9% 6.13MiB #lines!#88 at ~/.julia/dev/UnicodePlots.jl/src/plot.jl:510 1 305ms 99.6% 305ms 6.12MiB 98.8% 6.12MiB lines! at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:180 1 305ms 99.5% 305ms 6.11MiB 98.6% 6.11MiB lines! at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:114 1 305ms 99.5% 305ms 6.10MiB 98.5% 6.10MiB lines! at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:114 1 305ms 99.4% 305ms 6.10MiB 98.4% 6.10MiB pixel! at ~/.julia/dev/UnicodePlots.jl/src/canvas/braillecanvas.jl:76 81 296ms 96.6% 3.66ms 5.49MiB 88.6% 69.4KiB pixel_to_char_point_off at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:304 81 259ms 84.5% 3.20ms 1.46MiB 23.5% 18.4KiB x_pixel_per_char at ?:? 162 494μs 0.2% 3.05μs 0.00B 0.0% 0.00B y_pixel_per_char at ?:? 162 409μs 0.1% 2.52μs 0.00B 0.0% 0.00B pixel_width at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:12 81 47.8μs 0.0% 590ns 6.33KiB 0.1% 80.0B pixel_height at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:11 81 40.8μs 0.0% 504ns 6.33KiB 0.1% 80.0B ansi_color at ~/.julia/dev/UnicodePlots.jl/src/common.jl:537 81 10.3ms 3.3% 127μs 1.05MiB 16.9% 13.3KiB ansi_color at ~/.julia/dev/UnicodePlots.jl/src/common.jl:542 81 4.61ms 1.5% 56.9μs 375KiB 5.9% 4.63KiB ansi_4bit_to_8bit at ~/.julia/dev/UnicodePlots.jl/src/common.jl:521 81 1.37ms 0.4% 16.9μs 16.5KiB 0.3% 208B ignored_color at ~/.julia/dev/UnicodePlots.jl/src/common.jl:515 81 172μs 0.1% 2.12μs 7.59KiB 0.1% 96.0B set_color! at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:54 81 4.51ms 1.5% 55.7μs 545KiB 8.6% 6.72KiB set_color! at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:54 81 1.52ms 0.5% 18.7μs 157KiB 2.5% 1.94KiB blend_colors at ~/.julia/dev/UnicodePlots.jl/src/common.jl:497 32 123μs 0.0% 3.84μs 6.00KiB 0.1% 192B valid_x_pixel at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:38 81 2.71ms 0.9% 33.4μs 348KiB 5.5% 4.30KiB pixel_width at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:12 81 74.1μs 0.0% 915ns 6.33KiB 0.1% 80.0B valid_y_pixel at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:37 81 2.42ms 0.8% 29.9μs 348KiB 5.5% 4.30KiB pixel_height at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:11 81 52.0μs 0.0% 642ns 6.33KiB 0.1% 80.0B scale_y_to_pixel at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:31 2 550μs 0.2% 275μs 36.9KiB 0.6% 18.5KiB y_to_pixel at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:18 2 431μs 0.1% 215μs 27.7KiB 0.4% 13.9KiB pixel_height at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:11 2 5.46μs 0.0% 2.73μs 160B 0.0% 80.0B origin_y at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:13 2 5.35μs 0.0% 2.67μs 192B 0.0% 96.0B height at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:15 2 3.76μs 0.0% 1.88μs 192B 0.0% 96.0B scale_x_to_pixel at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:32 2 498μs 0.2% 249μs 36.9KiB 0.6% 18.4KiB x_to_pixel at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:24 2 372μs 0.1% 186μs 27.6KiB 0.4% 13.8KiB pixel_width at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:12 2 4.67μs 0.0% 2.33μs 160B 0.0% 80.0B origin_x at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:14 2 4.43μs 0.0% 2.21μs 192B 0.0% 96.0B width at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:16 2 3.65μs 0.0% 1.82μs 192B 0.0% 96.0B y_to_pixel at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:18 2 370μs 0.1% 185μs 27.8KiB 0.4% 13.9KiB pixel_height at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:11 2 4.62μs 0.0% 2.31μs 160B 0.0% 80.0B height at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:15 2 3.80μs 0.0% 1.90μs 192B 0.0% 96.0B origin_y at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:13 2 2.31μs 0.0% 1.15μs 192B 0.0% 96.0B x_to_pixel at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:24 2 350μs 0.1% 175μs 27.7KiB 0.4% 13.9KiB pixel_width at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:12 2 4.07μs 0.0% 2.04μs 160B 0.0% 80.0B width at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:16 2 3.79μs 0.0% 1.90μs 192B 0.0% 96.0B origin_x at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:14 2 2.56μs 0.0% 1.28μs 192B 0.0% 96.0B valid_y at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:34 1 212μs 0.1% 212μs 14.1KiB 0.2% 14.1KiB origin_y at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:13 2 6.84μs 0.0% 3.42μs 192B 0.0% 96.0B height at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:15 1 3.51μs 0.0% 3.51μs 96.0B 0.0% 96.0B valid_x at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:35 1 197μs 0.1% 197μs 14.1KiB 0.2% 14.1KiB origin_x at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:14 2 5.75μs 0.0% 2.88μs 192B 0.0% 96.0B width at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:16 1 4.08μs 0.0% 4.08μs 96.0B 0.0% 96.0B origin_y at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:13 2 5.57μs 0.0% 2.78μs 192B 0.0% 96.0B origin_x at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:14 2 4.25μs 0.0% 2.13μs 192B 0.0% 96.0B height at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:15 1 1.03μs 0.0% 1.03μs 96.0B 0.0% 96.0B width at ~/.julia/dev/UnicodePlots.jl/src/canvas.jl:16 1 868ns 0.0% 868ns 96.0B 0.0% 96.0B transform at ~/.julia/dev/UnicodePlots.jl/src/plot.jl:506 1 10.7μs 0.0% 10.7μs 240B 0.0% 240B next_color! at ~/.julia/dev/UnicodePlots.jl/src/plot.jl:292 1 46.6μs 0.0% 46.6μs 560B 0.0% 560B split_plot_kw at ~/.julia/dev/UnicodePlots.jl/src/common.jl:624 1 92.4μs 0.0% 92.4μs 4.94KiB 0.1% 4.94KiB #split_plot_kw#22 at ~/.julia/dev/UnicodePlots.jl/src/common.jl:624 1 7.95μs 0.0% 7.95μs 0.00B 0.0% 0.00B ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────EDIT: awesome, I've already cut down allocations on the example by
~20%.Regarding keyword arguments, we seem to hit JuliaLabs/Cassette.jl#48 - JuliaLabs/Cassette.jl#152 😢.
Can anyone advise what to do here ?