From 6f5e9417d8c0abb3acd3a35130140be6c355130a Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 3 Aug 2023 09:29:52 +0200 Subject: [PATCH] QmlDesigner: Add contains functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After extensive benchmarking(https://quick-bench.com/q/ajHEd5ZE-zmI2FoLQLGX9NREgmw) there was a clear result that a forced inline variatic function provides the fastest result. static bool search(QByteArrayView input) { return CoreUtils::contains(input, "children", "data", "childrenRect", "icon", "left", "transform", "visibleChildren"); } Change-Id: Id492bb4351bf3e87fc8e85c2b99e8d2a9b3efd0d Reviewed-by: Miikka Heikkinen Reviewed-by: Henning Gründl --- src/plugins/qmldesigner/CMakeLists.txt | 1 + .../qmldesigner/utils/designeralgorithm.h | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 src/plugins/qmldesigner/utils/designeralgorithm.h diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 143da043e25..166ff286dab 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -21,6 +21,7 @@ add_qtc_library(QmlDesignerUtils STATIC SOURCES_PREFIX ${CMAKE_CURRENT_LIST_DIR}/utils SOURCES asset.cpp asset.h + designeralgorithm.h filedownloader.cpp filedownloader.h multifiledownloader.cpp multifiledownloader.h fileextractor.cpp fileextractor.h diff --git a/src/plugins/qmldesigner/utils/designeralgorithm.h b/src/plugins/qmldesigner/utils/designeralgorithm.h new file mode 100644 index 00000000000..94d84c8b0be --- /dev/null +++ b/src/plugins/qmldesigner/utils/designeralgorithm.h @@ -0,0 +1,22 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#pragma once + +#include + +namespace QmlDesigner::CoreUtils { + +template +#ifdef Q_CC_MSVC +__forceinline +#else +[[gnu::always_inline]] +#endif + constexpr bool + contains(Element element, Elements... elements) +{ + return ((element == elements) || ...); +} + +} // namespace QmlDesigner::CoreUtils