From 41046c0d4469e26114272737921d9601f9717882 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 18 Jul 2024 10:11:33 +0200 Subject: [PATCH] LayoutBuilder: Initialize BuilderItem::apply more directly Also, add some timing information. Change-Id: I5d38cac9e7ad0afb24504ff521f31d5202268462 Reviewed-by: Jarek Kobus --- src/libs/utils/builderutils.h | 12 ++++---- tests/manual/layoutbuilder/v2/README.md | 37 +++++++++++++++++++++++++ tests/manual/layoutbuilder/v2/lb.h | 10 +++---- 3 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 tests/manual/layoutbuilder/v2/README.md diff --git a/src/libs/utils/builderutils.h b/src/libs/utils/builderutils.h index ea5f747a3c9..5ab620bd06c 100644 --- a/src/libs/utils/builderutils.h +++ b/src/libs/utils/builderutils.h @@ -27,18 +27,16 @@ public: // Property setter template BuilderItem(IdAndArg && idarg) - { - apply = [&idarg](X *x) { doit(x, Id{}, idarg.arg); }; - } + : apply([&idarg](X *x) { doit(x, Id{}, idarg.arg); }) + {} // Nested child object template BuilderItem(Inner && p) - { - apply = [&p](X *x) { doit(x, NestId{}, std::forward(p)); }; - } + : apply([&p](X *x) { doit(x, NestId{}, std::forward(p)); }) + {} - std::function apply; + const std::function apply; }; #define QTC_DEFINE_BUILDER_SETTER(name, setter) \ diff --git a/tests/manual/layoutbuilder/v2/README.md b/tests/manual/layoutbuilder/v2/README.md new file mode 100644 index 00000000000..d46aede5e0a --- /dev/null +++ b/tests/manual/layoutbuilder/v2/README.md @@ -0,0 +1,37 @@ + +This is an ad-hoc instruction count to judge the overhead imposed +by Layoutbuilder for + + Label ll { + text("World") + }; + + +(1) up to Label::Label +(2) after new Label to up to doit() +(3) tuple stuff in doit up to QLabel::setText parameter construction + + +With + + BuilderItem(IdAndArg && idarg) + { + apply = [&idarg](X *x) { doit(x, Id{}, idarg.arg); }; + } + + + (1) (2) + (3) Sum +-O0 547 259 + 802 1608 +-O2 24 23 47 + + + +With + + BuilderItem(IdAndArg && idarg) + : apply([&idarg](X *x) { doit(x, Id{}, idarg.arg); }) + {} + + + (1) (2) + (3) Sum +-O2 5 23 28 diff --git a/tests/manual/layoutbuilder/v2/lb.h b/tests/manual/layoutbuilder/v2/lb.h index 2d92f168a1c..6248a4fcb36 100644 --- a/tests/manual/layoutbuilder/v2/lb.h +++ b/tests/manual/layoutbuilder/v2/lb.h @@ -61,16 +61,14 @@ public: // Property setter template BuilderItem(IdAndArg && idarg) - { - apply = [&idarg](X *x) { doit(x, Id{}, idarg.arg); }; - } + : apply([&idarg](X *x) { doit(x, Id{}, idarg.arg); }) + {} // Nested child object template BuilderItem(Inner && p) - { - apply = [&p](X *x) { doit(x, NestId{}, std::forward(p)); }; - } + : apply([&p](X *x) { doit(x, NestId{}, std::forward(p)); }) + {} std::function apply; };