From 9a14dd8d40be4f4d88ba8424e908129ff628e259 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Tue, 7 Mar 2023 20:04:11 +0100 Subject: Graph Perf Update: 1296 chars to Region per Frame: RaspiPi4 10.25ms (Region) + 3.4ms (draw), PC 2.97ms (Region) + 0.36ms (draw) (GOOD) Performance update from commit 607eb99b9cad227dd7be6d149c6b6cf57d060c35 (Note: There I mentioned the total duration for 20 frames, not per frame) A Performance @ 2.4.0 with 119,787 vertices: - doc/curve/tests/perf00/rpi4_old.log - RaspiPi4 57.20ms (Region) + 23.4ms (draw) B Performance @ commit 607eb99b9cad227dd7be6d149c6b6cf57d060c35 with 81,092 vertices: - doc/curve/tests/perf01/rpi4_7.log + doc/curve/tests/perf01/pc_7.log - RaspiPi4 11.76ms (Region) + 3.5ms (draw), PC 3.4ms (Region) + 0.35ms (draw) C Now with 81,092 vertices (and a slight bigger buffer due to 'count' pre-size): - doc/curve/tests/perf02/rpi4_10.log + doc/curve/tests/perf02/pc_10.log - RaspiPi4 10.25ms (Region) + 3.4ms (draw), PC 2.97ms (Region) + 0.36ms (draw) Hence we enhanced performance from A -> C reasonably. Most important is that neither 'Flight Recorder' not 'Visual VM' could identify Region.addOutlineShape()'s triangulation nor vertices compounding to be significant throttle. After further triangulation bugfixes (delauny tesselation), we might analyze performance of this method further. Enhancements of VBO GLArrayData data management where Region.addOutlineShape() finally we pushes the data into the VBO helped to remove certain overhead. Mostly the buffer-size enhancements including API-hooks to count the required vertices & indices to issue Region.setBufferCapacity() helped to ease the GC. --- doc/curve/tests/perf00/rpi4_old.log | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 doc/curve/tests/perf00/rpi4_old.log (limited to 'doc/curve/tests/perf00') diff --git a/doc/curve/tests/perf00/rpi4_old.log b/doc/curve/tests/perf00/rpi4_old.log new file mode 100644 index 000000000..30f3367e1 --- /dev/null +++ b/doc/curve/tests/perf00/rpi4_old.log @@ -0,0 +1,27 @@ + 17: Perf: graph 0, txt[1 38, 2 0, all 38], draw 6, txt+draw 44, fin 0 [ms] + 18: Perf: graph 0, txt[1 38, 2 0, all 38], draw 6, txt+draw 44, fin 0 [ms] +Text_1: tbox [ dim 55.571003 x 15.901001 x 0.0, box 0.010000001 / -15.125001 / 0.0 .. 55.581 / 0.776 / 0.0, ctr 27.7955 / -7.1745005 / 0.0 ] +Text_1: rbox [ dim 55.57101 x 15.901001 x 0.0, box 0.01 / -15.125001 / 0.0 .. 55.58101 / 0.776 / 0.0, ctr 27.795504 / -7.1745005 / 0.0 ] + 19: Perf: graph 1, txt[1 37, 2 0, all 37], draw 7, txt+draw 44, fin 0 [ms] +VBORegion2PVBAAES2: idx32 true + indices [elements 60,016 / 62,000, bytes 720,192 / 744,000, filled 96.8%, left 3.2%] + vertices [elements 119,787 / 123,000, bytes 1,437,444 / 1,476,000, filled 97.4%, left 2.6%] + params [elements 119,787 / 123,000, bytes 1,437,444 / 1,476,000, filled 97.4%, left 2.6%] + color [elements 119,787 / 123,000, bytes 1,916,592 / 1,968,000, filled 97.4%, left 2.6%] + total [bytes 5,511,672 / 5,664,000], filled 97.3%, left 2.7%] +Region.add(): count 21460, total 903 [ms], per-add 42102.455 [ns] + shape_get 206 [ms], per-add 9602.414 [ns] + buffer_prep 6 [ms], per-add 286.271 [ns] + vertices 177 [ms], per-add 8278.021 [ns] + push_idx 70 [ms], per-add 3264.097 [ns] + push_vertidx 222 [ms], per-add 10347.168 [ns] + triangles 513 [ms], per-add 23935.750 [ns] +TypecastFont.process(): count 20, total 1011, per-add 50.550 [ms] + transform 25, per-add 1.250 [ms] + id 1, per-add 0.050 [ms] + shape_get 1, per-add 0.050 [ms] + translate 32, per-add 1.600 [ms] + visitor 915, per-add 45.750 [ms] + 20: Perf: Total: graph 36, txt[1 1144, 2 0, all 1144], draw 468, txt+draw 1612, fin 0 [ms] + 20: Perf: PerLoop: graph 1.80, txt[1 57.20, 2 0.00, all 57.20], draw 23.40, txt+draw 80.60, fin 0.00 [ms] + -- cgit v1.2.3