Skip to content

Commit

Permalink
Fix Redundant Bundle Validation checks (#921)
Browse files Browse the repository at this point in the history
Signed-off-by: Shivam Negi <snegi@mathworks.com>
  • Loading branch information
ShivamNegi committed Sep 22, 2023
1 parent 1f729ee commit 1760c69
Show file tree
Hide file tree
Showing 59 changed files with 1,157 additions and 55 deletions.
22 changes: 22 additions & 0 deletions compendium/DeclarativeServices/src/manager/BundleLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
=============================================================================*/

#include "cppmicroservices/SecurityException.h"

#include "cppmicroservices/Bundle.h"
#include "cppmicroservices/Constants.h"
#include "cppmicroservices/SharedLibrary.h"
Expand Down Expand Up @@ -102,6 +104,26 @@ namespace cppmicroservices
}
else
{
Any func = fromBundle.GetBundleContext().GetProperty(
cppmicroservices::Constants::FRAMEWORK_BUNDLE_VALIDATION_FUNC);
try
{
if (!func.Empty()
&& !any_cast<std::function<bool(cppmicroservices::Bundle const&)>>(func)(fromBundle))
{
std::string errMsg("Bundle at location " + bundleLoc + " failed bundle validation.");
throw SecurityException{ std::move(errMsg), fromBundle };
}
}
catch (cppmicroservices::SecurityException const&)
{
throw;
}
catch (...)
{
throw SecurityException { "The bundle validation callback threw an exception", fromBundle};
}

SharedLibrary sh(bundleLoc);
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
=============================================================================*/

#include "cppmicroservices/FrameworkFactory.h"
#include "cppmicroservices/SecurityException.h"

#include "../ConfigurationListenerImpl.hpp"
#include "BundleLoader.hpp"
Expand Down Expand Up @@ -488,29 +487,6 @@ namespace cppmicroservices
InstanceContextPair
ComponentConfigurationImpl::CreateAndActivateComponentInstanceHelper(cppmicroservices::Bundle const& bundle)
{
Any func = this->bundle.GetBundleContext().GetProperty(
cppmicroservices::Constants::FRAMEWORK_BUNDLE_VALIDATION_FUNC);

try
{
if (!func.Empty()
&& !any_cast<std::function<bool(cppmicroservices::Bundle const&)>>(func)(this->bundle))
{
std::string errMsg("Bundle at location ");
errMsg += this->bundle.GetLocation();
errMsg += " failed bundle validation.";
throw SecurityException { std::move(errMsg), this->bundle };
}
}
catch (cppmicroservices::SecurityException const&)
{
throw;
}
catch (...)
{
throw SecurityException { "The bundle validation callback threw an exception", this->bundle };
}

auto componentInstance = CreateComponentInstance();
auto ctxt = std::make_shared<ComponentContextImpl>(shared_from_this(), bundle);
/*
Expand Down
165 changes: 134 additions & 31 deletions compendium/DeclarativeServices/test/gtest/TestBundleValidation.cpp

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions compendium/test_bundles/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,17 @@ add_subdirectory(TestBundleDSDGMU)
add_subdirectory(TestBundleDSDGOU)
add_subdirectory(TestBundleDSSLE1)
add_subdirectory(TestBundleDSSLE2)
add_subdirectory(TestBundleDSTBV1)
add_subdirectory(TestBundleDSTBV1_1)
add_subdirectory(TestBundleDSTBV1_2)
add_subdirectory(TestBundleDSTBV1_3)
add_subdirectory(TestBundleDSTBV1_4)
add_subdirectory(TestBundleDSTBV1_5)
add_subdirectory(TestBundleDSTBV2)
add_subdirectory(TestBundleDSTBV3)
add_subdirectory(TestBundleDSTBV3_1)
add_subdirectory(TestBundleDSTBV4)
add_subdirectory(TestBundleDSTBV5)
add_subdirectory(TestBundleDSTOI1)
add_subdirectory(TestBundleDSTOI10)
add_subdirectory(TestBundleDSTOI12)
Expand Down
7 changes: 7 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
usFunctionCreateDSTestBundle(TestBundleDSTBV1)

usFunctionCreateTestBundleWithResources(TestBundleDSTBV1
SOURCES src/ServiceImpl.cpp ${_glue_file}
RESOURCES manifest.json
BUNDLE_SYMBOLIC_NAME TestBundleDSTBV1
OTHER_LIBRARIES usTestInterfaces usServiceComponent)
18 changes: 18 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1/resources/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"bundle.symbolic_name": "TestBundleDSTBV1",
"bundle.name": "TestBundleDSTBV1",
"bundle.activator": false,
"scr": {
"version": 1,
"components": [
{
"enabled": true,
"immediate": true,
"implementation-class": "sample::ServiceComponentBV1",
"service": {
"interfaces": [ "test::Interface1" ]
}
}
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef SERVICECOMPONENTS_HPP
#define SERVICECOMPONENTS_HPP

#include "ServiceImpl.hpp"

#endif
33 changes: 33 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1/src/ServiceImpl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*=============================================================================
Library: CppMicroServices
Copyright (c) The CppMicroServices developers. See the COPYRIGHT
file at the top-level directory of this distribution and at
https://github.com/CppMicroServices/CppMicroServices/COPYRIGHT .
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
=============================================================================*/
#include "ServiceImpl.hpp"

namespace sample
{
ServiceComponentBV1::~ServiceComponentBV1() {}

std::string
ServiceComponentBV1::Description()
{
return STRINGIZE(US_BUNDLE_NAME);
}
} // namespace sample
17 changes: 17 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1/src/ServiceImpl.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#ifndef _SERVICE_IMPL_HPP_
#define _SERVICE_IMPL_HPP_

#include "TestInterfaces/Interfaces.hpp"

namespace sample
{
class ServiceComponentBV1 : public test::Interface1
{
public:
ServiceComponentBV1() = default;
~ServiceComponentBV1() override;
std::string Description() override;
};
} // namespace sample

#endif // _SERVICE_IMPL_HPP_
8 changes: 8 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1_1/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
usFunctionCreateDSTestBundle(TestBundleDSTBV1_1)

usFunctionCreateTestBundleWithResources(TestBundleDSTBV1_1
SOURCES src/ServiceImpl.cpp ${_glue_file}
RESOURCES manifest.json
BUNDLE_SYMBOLIC_NAME TestBundleDSTBV1_1
OTHER_LIBRARIES usTestInterfaces usServiceComponent)

21 changes: 21 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1_1/resources/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"bundle.symbolic_name": "TestBundleDSTBV1_1",
"scr": {
"version": 1,
"components": [
{
"implementation-class": "sample::ServiceComponentBV1_1",
"service": {
"interfaces": [ "test::Interface2" ]
},
"references": [
{
"name": "foo",
"interface": "test::Interface1"
}
],
"inject-references": false
}
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef SERVICECOMPONENTS_HPP
#define SERVICECOMPONENTS_HPP

#include "ServiceImpl.hpp"

#endif
48 changes: 48 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1_1/src/ServiceImpl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#include "ServiceImpl.hpp"

namespace sample
{
void
ServiceComponentBV1_1::Activate(std::shared_ptr<ComponentContext> const& ctxt)
{
foo = ctxt->LocateService<test::Interface1>("foo");
}

void
ServiceComponentBV1_1::Deactivate(std::shared_ptr<ComponentContext> const&)
{
foo = nullptr;
}

std::string
ServiceComponentBV1_1::ExtendedDescription()
{
if (!foo)
{
throw std::runtime_error("Dependency not available");
}
std::string result(STRINGIZE(US_BUNDLE_NAME));
result.append("depends on ");
result.append(foo->Description());
return result;
}

void
ServiceComponentBV1_1::Bindfoo(std::shared_ptr<test::Interface1> const& theFoo)
{
if (foo != theFoo)
{
foo = theFoo;
}
}

void
ServiceComponentBV1_1::Unbindfoo(std::shared_ptr<test::Interface1> const& theFoo)
{
if (foo == theFoo)
{
foo = nullptr;
}
}

} // namespace sample
28 changes: 28 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1_1/src/ServiceImpl.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#ifndef _SERVICE_IMPL_HPP_
#define _SERVICE_IMPL_HPP_

#include "TestInterfaces/Interfaces.hpp"
#include "cppmicroservices/servicecomponent/ComponentContext.hpp"

using ComponentContext = cppmicroservices::service::component::ComponentContext;

namespace sample
{
class ServiceComponentBV1_1 : public test::Interface2
{
public:
ServiceComponentBV1_1() = default;
std::string ExtendedDescription() override;
void Activate(std::shared_ptr<ComponentContext> const&);
void Deactivate(std::shared_ptr<ComponentContext> const&);
~ServiceComponentBV1_1() = default;

void Bindfoo(std::shared_ptr<test::Interface1> const&);
void Unbindfoo(std::shared_ptr<test::Interface1> const&);

private:
std::shared_ptr<test::Interface1> foo;
};
} // namespace sample

#endif // _SERVICE_IMPL_HPP_
8 changes: 8 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1_2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
usFunctionCreateDSTestBundle(TestBundleDSTBV1_2)

usFunctionCreateTestBundleWithResources(TestBundleDSTBV1_2
SOURCES src/ServiceImpl.cpp ${_glue_file}
RESOURCES manifest.json
BUNDLE_SYMBOLIC_NAME TestBundleDSTBV1_2
OTHER_LIBRARIES usTestInterfaces usServiceComponent usServiceComponent)

23 changes: 23 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1_2/resources/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"bundle.symbolic_name": "TestBundleDSTBV1_2",
"scr": {
"version": 1,
"components": [
{
"immediate": true,
"implementation-class": "sample::ServiceComponentBV1_2",
"service": {
"interfaces": [ "test::Interface2" ]
},
"references": [
{
"name": "foo",
"policy": "Dynamic",
"interface": "test::Interface1"
}
],
"inject-references": false
}
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef SERVICECOMPONENTS_HPP
#define SERVICECOMPONENTS_HPP

#include "ServiceImpl.hpp"

#endif
48 changes: 48 additions & 0 deletions compendium/test_bundles/TestBundleDSTBV1_2/src/ServiceImpl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#include "ServiceImpl.hpp"
#include <iostream>

namespace sample
{

void
ServiceComponentBV1_2::Activate(std::shared_ptr<ComponentContext> const& /*ctxt*/)
{
}

void
ServiceComponentBV1_2::Deactivate(std::shared_ptr<ComponentContext> const&)
{
}

std::string
ServiceComponentBV1_2::ExtendedDescription()
{
if (!foo)
{
throw std::runtime_error("Dependency not available");
}
std::string result(STRINGIZE(US_BUNDLE_NAME));
result.append("depends on ");
result.append(foo->Description());
return result;
}

void
ServiceComponentBV1_2::Bindfoo(std::shared_ptr<test::Interface1> const& theFoo)
{
if (foo != theFoo)
{
foo = theFoo;
}
}

void
ServiceComponentBV1_2::Unbindfoo(std::shared_ptr<test::Interface1> const& theFoo)
{
if (foo == theFoo)
{
foo = nullptr;
}
}

} // namespace sample

1 comment on commit 1760c69

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'C++ Benchmark'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 0.20.

Benchmark suite Current: 1760c69 Previous: 1f729ee Ratio
ServiceRegistryFixture/RegisterServices/1/1/manual_time 27997.517679318396 ns/iter 34738.63303931617 ns/iter 0.81
ServiceRegistryFixture/RegisterServices/4/1/manual_time 114078.12619991801 ns/iter 137446.56816015425 ns/iter 0.83
ServiceRegistryFixture/RegisterServices/16/1/manual_time 443453.30102967424 ns/iter 549003.2258064612 ns/iter 0.81
ServiceRegistryFixture/RegisterServices/64/1/manual_time 1776518.221258103 ns/iter 2209619.6969697187 ns/iter 0.80
ServiceRegistryFixture/RegisterServices/256/1/manual_time 7257832.812499736 ns/iter 8825702.105263246 ns/iter 0.82
ServiceRegistryFixture/RegisterServices/1000/1/manual_time 27596692.8571424 ns/iter 35100690.90909129 ns/iter 0.79
ServiceRegistryFixture/RegisterServices/1/4/manual_time 78707.40165208177 ns/iter 94490.88466086215 ns/iter 0.83
ServiceRegistryFixture/RegisterServices/4/4/manual_time 307809.5499021536 ns/iter 356228.62208713125 ns/iter 0.86
ServiceRegistryFixture/RegisterServices/16/4/manual_time 1250731.4763231261 ns/iter 1476473.5632183857 ns/iter 0.85
ServiceRegistryFixture/RegisterServices/64/4/manual_time 4878249.66442957 ns/iter 5635357.000000001 ns/iter 0.87
ServiceRegistryFixture/RegisterServices/256/4/manual_time 19831295.000000086 ns/iter 24112278.787878618 ns/iter 0.82
ServiceRegistryFixture/RegisterServices/1000/4/manual_time 78342700.00000015 ns/iter 92748839.99999903 ns/iter 0.84
ServiceRegistryFixture/RegisterServices/1/16/manual_time 248182.46616541277 ns/iter 288413.34545454534 ns/iter 0.86
ServiceRegistryFixture/RegisterServices/4/16/manual_time 1006280.271398745 ns/iter 1165951.4388489223 ns/iter 0.86
ServiceRegistryFixture/RegisterServices/16/16/manual_time 3934588.082901554 ns/iter 4631871.794871796 ns/iter 0.85
ServiceRegistryFixture/RegisterServices/64/16/manual_time 16007030.357142832 ns/iter 19403738.297872305 ns/iter 0.82
ServiceRegistryFixture/RegisterServices/256/16/manual_time 61693839.99999976 ns/iter 74625530.00000027 ns/iter 0.83
ServiceRegistryFixture/RegisterServices/1000/16/manual_time 245561599.99999925 ns/iter 304038500.00000006 ns/iter 0.81
ServiceRegistryFixture/RegisterServices/1/64/manual_time 857615.0297619043 ns/iter 1013130.7958477506 ns/iter 0.85
ServiceRegistryFixture/RegisterServices/4/64/manual_time 3273474.297188753 ns/iter 3766820.0000000047 ns/iter 0.87
ServiceRegistryFixture/RegisterServices/16/64/manual_time 13383563.513513533 ns/iter 15999216.92307693 ns/iter 0.84
ServiceRegistryFixture/RegisterServices/64/64/manual_time 51517835.71428577 ns/iter 57162130.000000015 ns/iter 0.90
ServiceRegistryFixture/RegisterServices/256/64/manual_time 208926175.00000006 ns/iter 248971075.0000002 ns/iter 0.84
ServiceRegistryFixture/RegisterServices/1000/64/manual_time 817340000.0000005 ns/iter 974821100.0000008 ns/iter 0.84
ServiceRegistryFixture/RegisterServices/1/256/manual_time 2727986.461538459 ns/iter 3057541.509433963 ns/iter 0.89
ServiceRegistryFixture/RegisterServices/4/256/manual_time 11372975.471698113 ns/iter 13860094.444444448 ns/iter 0.82
ServiceRegistryFixture/RegisterServices/16/256/manual_time 42885863.15789475 ns/iter 50375333.33333336 ns/iter 0.85
ServiceRegistryFixture/RegisterServices/64/256/manual_time 180392383.33333328 ns/iter 206716279.9999998 ns/iter 0.87
ServiceRegistryFixture/RegisterServices/256/256/manual_time 662148199.9999998 ns/iter 777156499.9999998 ns/iter 0.85
ServiceRegistryFixture/RegisterServices/1000/256/manual_time 3296776700.0000005 ns/iter 4019440600.0000005 ns/iter 0.82
ServiceRegistryFixture/RegisterServices/1/1000/manual_time 8387393 ns/iter 10614837.878787879 ns/iter 0.79
ServiceRegistryFixture/RegisterServices/4/1000/manual_time 33901403.7037037 ns/iter 38176252.38095237 ns/iter 0.89
ServiceRegistryFixture/RegisterServices/16/1000/manual_time 145347244.44444442 ns/iter 169119937.49999997 ns/iter 0.86
ServiceRegistryFixture/RegisterServices/64/1000/manual_time 558477100 ns/iter 580727900 ns/iter 0.96
ServiceRegistryFixture/RegisterServices/256/1000/manual_time 2597305099.9999995 ns/iter 3200245699.9999986 ns/iter 0.81
ServiceRegistryFixture/RegisterServices/1000/1000/manual_time 13073672900.000006 ns/iter 16249654200.000023 ns/iter 0.80
ServiceRegistryFixture/RegisterServicesWithRank/1/1/manual_time 27999.323961797552 ns/iter 36301.7042384951 ns/iter 0.77
ServiceRegistryFixture/RegisterServicesWithRank/4/1/manual_time 187795.98769559897 ns/iter 212142.7233429396 ns/iter 0.89
ServiceRegistryFixture/RegisterServicesWithRank/16/1/manual_time 626823.500000003 ns/iter 762874.6999999961 ns/iter 0.82
ServiceRegistryFixture/RegisterServicesWithRank/64/1/manual_time 3168891.777188335 ns/iter 3553349.3055555644 ns/iter 0.89
ServiceRegistryFixture/RegisterServicesWithRank/256/1/manual_time 15154026.666666659 ns/iter 17604758.94736843 ns/iter 0.86
ServiceRegistryFixture/RegisterServicesWithRank/1000/1/manual_time 47102180.95238081 ns/iter 56548564.7058825 ns/iter 0.83
ServiceRegistryFixture/RegisterServicesWithRank/1/4/manual_time 78551.72809172809 ns/iter 95919.74534580889 ns/iter 0.82
ServiceRegistryFixture/RegisterServicesWithRank/4/4/manual_time 395630.5254016504 ns/iter 469226.1237440498 ns/iter 0.84
ServiceRegistryFixture/RegisterServicesWithRank/16/4/manual_time 1806533.3333333323 ns/iter 1938549.4758909848 ns/iter 0.93
ServiceRegistryFixture/RegisterServicesWithRank/64/4/manual_time 6090585 ns/iter 8077235 ns/iter 0.75
ServiceRegistryFixture/RegisterServicesWithRank/256/4/manual_time 28554647.36842106 ns/iter 33646303.225806504 ns/iter 0.85
ServiceRegistryFixture/RegisterServicesWithRank/1000/4/manual_time 119336400.00000028 ns/iter 137978379.9999999 ns/iter 0.86
ServiceRegistryFixture/RegisterServicesWithRank/1/16/manual_time 251151.92887281466 ns/iter 305707.32054015686 ns/iter 0.82
ServiceRegistryFixture/RegisterServicesWithRank/4/16/manual_time 1148353.3333333328 ns/iter 1380253.5589264866 ns/iter 0.83
ServiceRegistryFixture/RegisterServicesWithRank/16/16/manual_time 4427668.306010923 ns/iter 5092441.379310345 ns/iter 0.87
ServiceRegistryFixture/RegisterServicesWithRank/64/16/manual_time 19013200.000000052 ns/iter 21993702.127659548 ns/iter 0.86
ServiceRegistryFixture/RegisterServicesWithRank/256/16/manual_time 68899129.99999997 ns/iter 93920742.85714279 ns/iter 0.73
ServiceRegistryFixture/RegisterServicesWithRank/1000/16/manual_time 270878766.6666663 ns/iter 324882600.0000008 ns/iter 0.83
ServiceRegistryFixture/RegisterServicesWithRank/1/64/manual_time 865731.3862928338 ns/iter 1010700.7604562743 ns/iter 0.86
ServiceRegistryFixture/RegisterServicesWithRank/4/64/manual_time 3261891.9847328267 ns/iter 3722039.6135265687 ns/iter 0.88
ServiceRegistryFixture/RegisterServicesWithRank/16/64/manual_time 14141453.246753257 ns/iter 16644322.727272727 ns/iter 0.85
ServiceRegistryFixture/RegisterServicesWithRank/64/64/manual_time 52877928.57142864 ns/iter 60443949.999999896 ns/iter 0.87
ServiceRegistryFixture/RegisterServicesWithRank/256/64/manual_time 218529824.99999994 ns/iter 249233200.00000003 ns/iter 0.88
ServiceRegistryFixture/RegisterServicesWithRank/1000/64/manual_time 840443900.0000005 ns/iter 1036448700.0000015 ns/iter 0.81
ServiceRegistryFixture/RegisterServicesWithRank/1/256/manual_time 2779782.1875 ns/iter 3250982.8996282537 ns/iter 0.86
ServiceRegistryFixture/RegisterServicesWithRank/4/256/manual_time 11181422.881355928 ns/iter 13468512.871287126 ns/iter 0.83
ServiceRegistryFixture/RegisterServicesWithRank/16/256/manual_time 42208215.7894737 ns/iter 50497219.999999985 ns/iter 0.84
ServiceRegistryFixture/RegisterServicesWithRank/64/256/manual_time 179270033.33333328 ns/iter 209974120.00000006 ns/iter 0.85
ServiceRegistryFixture/RegisterServicesWithRank/256/256/manual_time 668175599.9999999 ns/iter 802243400 ns/iter 0.83
ServiceRegistryFixture/RegisterServicesWithRank/1000/256/manual_time 3318062299.999998 ns/iter 4064022400.0000014 ns/iter 0.82
ServiceRegistryFixture/RegisterServicesWithRank/1/1000/manual_time 8395125.999999998 ns/iter 10088337.999999998 ns/iter 0.83
ServiceRegistryFixture/RegisterServicesWithRank/4/1000/manual_time 31587693.5483871 ns/iter 37315530.769230776 ns/iter 0.85
ServiceRegistryFixture/RegisterServicesWithRank/16/1000/manual_time 137461833.33333337 ns/iter 166879687.5 ns/iter 0.82
ServiceRegistryFixture/RegisterServicesWithRank/64/1000/manual_time 540533050.0000002 ns/iter 596981300.0000001 ns/iter 0.91
ServiceRegistryFixture/RegisterServicesWithRank/256/1000/manual_time 2622306599.9999995 ns/iter 3257716600.0000005 ns/iter 0.80
ServiceRegistryFixture/RegisterServicesWithRank/1000/1000/manual_time 13100174099.999996 ns/iter 16604999499.999994 ns/iter 0.79
ServiceRegistryFixture/FindServices/1/1 2103.3449999997342 ns/iter 2606.545010226889 ns/iter 0.81
ServiceRegistryFixture/FindServices/4/1 3965.079799106113 ns/iter 4807.934069583332 ns/iter 0.82
ServiceRegistryFixture/FindServices/16/1 11477.182812502208 ns/iter 13996.438185544408 ns/iter 0.82
ServiceRegistryFixture/FindServices/64/1 42460.85698788843 ns/iter 51561.285714285536 ns/iter 0.82
ServiceRegistryFixture/FindServices/256/1 155702.72321429205 ns/iter 187529.36410505636 ns/iter 0.83
ServiceRegistryFixture/FindServices/1000/1 580966.607142841 ns/iter 693274.8883927381 ns/iter 0.84
ServiceRegistryFixture/FindServices/1/4 8443.07812500032 ns/iter 11044.609375002068 ns/iter 0.76
ServiceRegistryFixture/FindServices/4/4 15832.529017854671 ns/iter 20406.128626146794 ns/iter 0.78
ServiceRegistryFixture/FindServices/16/4 45955.199892860706 ns/iter 58590.464285706345 ns/iter 0.78
ServiceRegistryFixture/FindServices/64/4 170535.4529830822 ns/iter 217465.14799767715 ns/iter 0.78
ServiceRegistryFixture/FindServices/256/4 621703.9285715487 ns/iter 761293.4404283827 ns/iter 0.82
ServiceRegistryFixture/FindServices/1000/4 2328120.937499989 ns/iter 2765339.83050848 ns/iter 0.84
ServiceRegistryFixture/FindServices/1/16 33843.936624003814 ns/iter 44589.70000000306 ns/iter 0.76
ServiceRegistryFixture/FindServices/4/16 63734.96651784296 ns/iter 79092.25446428738 ns/iter 0.81
ServiceRegistryFixture/FindServices/16/16 184174.84596840074 ns/iter 225232.68749999657 ns/iter 0.82
ServiceRegistryFixture/FindServices/64/16 682610.4464287093 ns/iter 831881.0267858064 ns/iter 0.82
ServiceRegistryFixture/FindServices/256/16 2490357.50000043 ns/iter 2951255.932202912 ns/iter 0.84
ServiceRegistryFixture/FindServices/1000/16 9284253.333332041 ns/iter 11831076.785715107 ns/iter 0.78
ServiceRegistryFixture/FindServices/1/64 136048.7946966633 ns/iter 174977.21581138964 ns/iter 0.78
ServiceRegistryFixture/FindServices/4/64 253925.88235301216 ns/iter 337484.6694796629 ns/iter 0.75
ServiceRegistryFixture/FindServices/16/64 734431.584821544 ns/iter 878763.8554216952 ns/iter 0.84
ServiceRegistryFixture/FindServices/64/64 2716895.18072309 ns/iter 3395091.079812733 ns/iter 0.80
ServiceRegistryFixture/FindServices/256/64 10004598.666667638 ns/iter 11597396.42857208 ns/iter 0.86
ServiceRegistryFixture/FindServices/1000/64 37278321.05263779 ns/iter 46749559.999989286 ns/iter 0.80
ServiceRegistryFixture/FindServices/1/256 577950.0000001007 ns/iter 718224.8883927298 ns/iter 0.80
ServiceRegistryFixture/FindServices/4/256 1089397.031250172 ns/iter 1338123.4939762256 ns/iter 0.81
ServiceRegistryFixture/FindServices/16/256 3122128.1249997905 ns/iter 3777089.3854749827 ns/iter 0.83
ServiceRegistryFixture/FindServices/64/256 11472594.64285558 ns/iter 14010423.214285439 ns/iter 0.82
ServiceRegistryFixture/FindServices/256/256 42088817.64706723 ns/iter 53044189.99999143 ns/iter 0.79
ServiceRegistryFixture/FindServices/1000/256 159018424.99999928 ns/iter 192849200.00001192 ns/iter 0.82
ServiceRegistryFixture/FindServices/1/1000 2324625.7525082617 ns/iter 3013575.502007874 ns/iter 0.77
ServiceRegistryFixture/FindServices/4/1000 4354749.374999756 ns/iter 5480895.000000601 ns/iter 0.79
ServiceRegistryFixture/FindServices/16/1000 12476478.571431113 ns/iter 15465071.111111684 ns/iter 0.81
ServiceRegistryFixture/FindServices/64/1000 46027693.33334133 ns/iter 56480480.00000472 ns/iter 0.81
ServiceRegistryFixture/FindServices/256/1000 168210400.00002086 ns/iter 213028333.3333409 ns/iter 0.79
ServiceRegistryFixture/FindServices/1000/1000 635039499.999948 ns/iter 773354199.9998579 ns/iter 0.82
ServiceRegistryFixture/UnregisterServices/1/1/manual_time 2722.753346087384 ns/iter 3425.2024105500536 ns/iter 0.79
ServiceRegistryFixture/UnregisterServices/4/1/manual_time 10673.712605715318 ns/iter 13785.776571851082 ns/iter 0.77
ServiceRegistryFixture/UnregisterServices/16/1/manual_time 43354.785745441455 ns/iter 56972.104492563325 ns/iter 0.76
ServiceRegistryFixture/UnregisterServices/64/1/manual_time 190660.20490686077 ns/iter 249493.24373403887 ns/iter 0.76
ServiceRegistryFixture/UnregisterServices/256/1/manual_time 985492.36111097 ns/iter 1301079.8521255623 ns/iter 0.76
ServiceRegistryFixture/UnregisterServices/1000/1/manual_time 6967155.44554434 ns/iter 10176223.529411793 ns/iter 0.68
ServiceRegistryFixture/UnregisterServices/1/4/manual_time 3299.1595483459455 ns/iter 4266.009415415017 ns/iter 0.77
ServiceRegistryFixture/UnregisterServices/4/4/manual_time 12392.021370365776 ns/iter 16154.911399468541 ns/iter 0.77
ServiceRegistryFixture/UnregisterServices/16/4/manual_time 64197.6205670076 ns/iter 66760.29937861038 ns/iter 0.96
ServiceRegistryFixture/UnregisterServices/64/4/manual_time 240524.91408925474 ns/iter 324056.0907827481 ns/iter 0.74
ServiceRegistryFixture/UnregisterServices/256/4/manual_time 1485990.4458598099 ns/iter 2023179.0960452314 ns/iter 0.73
ServiceRegistryFixture/UnregisterServices/1000/4/manual_time 13802049.019608092 ns/iter 19698545.94594602 ns/iter 0.70
ServiceRegistryFixture/UnregisterServices/1/16/manual_time 5412.965940425799 ns/iter 7165.692842904816 ns/iter 0.76
ServiceRegistryFixture/UnregisterServices/4/16/manual_time 19205.577874348844 ns/iter 24574.02574501047 ns/iter 0.78
ServiceRegistryFixture/UnregisterServices/16/16/manual_time 92793.86779929385 ns/iter 107603.65682138287 ns/iter 0.86
ServiceRegistryFixture/UnregisterServices/64/16/manual_time 443853.93401015544 ns/iter 597983.1970935706 ns/iter 0.74
ServiceRegistryFixture/UnregisterServices/256/16/manual_time 3566697.435897458 ns/iter 5200865.833333334 ns/iter 0.69
ServiceRegistryFixture/UnregisterServices/1000/16/manual_time 40162088.23529424 ns/iter 58411783.33333329 ns/iter 0.69
ServiceRegistryFixture/UnregisterServices/1/64/manual_time 14262.04802145351 ns/iter 18852.918267037807 ns/iter 0.76
ServiceRegistryFixture/UnregisterServices/4/64/manual_time 43717.07863769584 ns/iter 59175.43599868342 ns/iter 0.74
ServiceRegistryFixture/UnregisterServices/16/64/manual_time 198870.99971679496 ns/iter 283277.67102229 ns/iter 0.70
ServiceRegistryFixture/UnregisterServices/64/64/manual_time 1261214.0287769937 ns/iter 1791994.7103274572 ns/iter 0.70
ServiceRegistryFixture/UnregisterServices/256/64/manual_time 11997322.033898354 ns/iter 17133511.904762 ns/iter 0.70
ServiceRegistryFixture/UnregisterServices/1000/64/manual_time 146141180.00000042 ns/iter 213372566.66666695 ns/iter 0.68
ServiceRegistryFixture/UnregisterServices/1/256/manual_time 81667.13469776294 ns/iter 116598.62659557312 ns/iter 0.70
ServiceRegistryFixture/UnregisterServices/4/256/manual_time 268145.0860420641 ns/iter 375639.7708674315 ns/iter 0.71
ServiceRegistryFixture/UnregisterServices/16/256/manual_time 1148125.448613381 ns/iter 1701635.0961538428 ns/iter 0.67
ServiceRegistryFixture/UnregisterServices/64/256/manual_time 6716094.230769225 ns/iter 9735877.02702704 ns/iter 0.69
ServiceRegistryFixture/UnregisterServices/256/256/manual_time 54338753.84615357 ns/iter 76365311.11111113 ns/iter 0.71
ServiceRegistryFixture/UnregisterServices/1000/256/manual_time 611772900.0000004 ns/iter 851846799.9999996 ns/iter 0.72
ServiceRegistryFixture/UnregisterServices/1/1000/manual_time 376952.3068669529 ns/iter 536036.4139020541 ns/iter 0.70
ServiceRegistryFixture/UnregisterServices/4/1000/manual_time 1268739.279279281 ns/iter 1820604.054054054 ns/iter 0.70
ServiceRegistryFixture/UnregisterServices/16/1000/manual_time 5768619.672131148 ns/iter 8775256.249999981 ns/iter 0.66
ServiceRegistryFixture/UnregisterServices/64/1000/manual_time 32358954.545454565 ns/iter 45915773.333333306 ns/iter 0.70
ServiceRegistryFixture/UnregisterServices/256/1000/manual_time 240369233.33333322 ns/iter 344468399.9999998 ns/iter 0.70
ServiceRegistryFixture/UnregisterServices/1000/1000/manual_time 2590885999.999999 ns/iter 3777231800.0000014 ns/iter 0.69
ServiceRegistryFixture/ModifyServices/1/1/manual_time 5914.363193680803 ns/iter 7102.609672890197 ns/iter 0.83
ServiceRegistryFixture/ModifyServices/4/1/manual_time 23472.668193143243 ns/iter 28870.77777778186 ns/iter 0.81
ServiceRegistryFixture/ModifyServices/16/1/manual_time 95210.66973969471 ns/iter 126215.89595375708 ns/iter 0.75
ServiceRegistryFixture/ModifyServices/64/1/manual_time 398257.97728501854 ns/iter 499389.6961690888 ns/iter 0.80
ServiceRegistryFixture/ModifyServices/256/1/manual_time 1710902.0930232557 ns/iter 1987553.739612186 ns/iter 0.86
ServiceRegistryFixture/ModifyServices/1000/1/manual_time 6110786.440677964 ns/iter 8160680.43478261 ns/iter 0.75
ServiceRegistryFixture/ModifyServices/1/4/manual_time 6063.235523779496 ns/iter 7778.090892138484 ns/iter 0.78
ServiceRegistryFixture/ModifyServices/4/4/manual_time 24087.724427325593 ns/iter 30815.026936324655 ns/iter 0.78
ServiceRegistryFixture/ModifyServices/16/4/manual_time 95551.72270651761 ns/iter 120382.29249011805 ns/iter 0.79
ServiceRegistryFixture/ModifyServices/64/4/manual_time 404755.0249861185 ns/iter 478497.5468975475 ns/iter 0.85
ServiceRegistryFixture/ModifyServices/256/4/manual_time 1608343.1151241534 ns/iter 2044113.0681818193 ns/iter 0.79
ServiceRegistryFixture/ModifyServices/1000/4/manual_time 6103261.206896553 ns/iter 7758191.666666672 ns/iter 0.79
ServiceRegistryFixture/ModifyServices/1/16/manual_time 6593.66621921065 ns/iter 8514.177362160879 ns/iter 0.77
ServiceRegistryFixture/ModifyServices/4/16/manual_time 26283.646751671662 ns/iter 33335.530946457824 ns/iter 0.79
ServiceRegistryFixture/ModifyServices/16/16/manual_time 105769.98646005736 ns/iter 138467.24662896816 ns/iter 0.76
ServiceRegistryFixture/ModifyServices/64/16/manual_time 457949.44408109854 ns/iter 543620.4172876304 ns/iter 0.84
ServiceRegistryFixture/ModifyServices/256/16/manual_time 1726979.6344647503 ns/iter 2483492.932862191 ns/iter 0.70
ServiceRegistryFixture/ModifyServices/1000/16/manual_time 6682388.57142857 ns/iter 9133467.567567563 ns/iter 0.73
ServiceRegistryFixture/ModifyServices/1/64/manual_time 9091.341287055133 ns/iter 12117.855002999091 ns/iter 0.75
ServiceRegistryFixture/ModifyServices/4/64/manual_time 35769.6927944496 ns/iter 46165.6460819941 ns/iter 0.77
ServiceRegistryFixture/ModifyServices/16/64/manual_time 143504.77963997528 ns/iter 190923.1084403166 ns/iter 0.75
ServiceRegistryFixture/ModifyServices/64/64/manual_time 582605.9652029822 ns/iter 728346.5481171538 ns/iter 0.80
ServiceRegistryFixture/ModifyServices/256/64/manual_time 2322922.1854304634 ns/iter 3142021.9298245623 ns/iter 0.74
ServiceRegistryFixture/ModifyServices/1000/64/manual_time 9216119.480519481 ns/iter 12759795.999999998 ns/iter 0.72
ServiceRegistryFixture/ModifyServices/1/256/manual_time 40193.12208867516 ns/iter 59205.40748137309 ns/iter 0.68
ServiceRegistryFixture/ModifyServices/4/256/manual_time 159343.90980939058 ns/iter 240074.79338842945 ns/iter 0.66
ServiceRegistryFixture/ModifyServices/16/256/manual_time 648975.9853345554 ns/iter 930191.3473423981 ns/iter 0.70
ServiceRegistryFixture/ModifyServices/64/256/manual_time 2699683.206106869 ns/iter 3891936.66666667 ns/iter 0.69
ServiceRegistryFixture/ModifyServices/256/256/manual_time 10973170.76923077 ns/iter 15864967.441860462 ns/iter 0.69
ServiceRegistryFixture/ModifyServices/1000/256/manual_time 44226656.24999999 ns/iter 59620449.99999999 ns/iter 0.74
ServiceRegistryFixture/ModifyServices/1/1000/manual_time 178168.75000000015 ns/iter 250175.80833658008 ns/iter 0.71
ServiceRegistryFixture/ModifyServices/4/1000/manual_time 709637.033195021 ns/iter 975073.0474732006 ns/iter 0.73
ServiceRegistryFixture/ModifyServices/16/1000/manual_time 2900885.2459016414 ns/iter 4175097.076023389 ns/iter 0.69
ServiceRegistryFixture/ModifyServices/64/1000/manual_time 11767820.000000002 ns/iter 16094104.878048783 ns/iter 0.73
ServiceRegistryFixture/ModifyServices/256/1000/manual_time 47893080 ns/iter 68741920.00000001 ns/iter 0.70
ServiceRegistryFixture/ModifyServices/1000/1000/manual_time 193284075 ns/iter 274609500 ns/iter 0.70
ServiceTrackerFixture/OpenServiceTrackerWithSvcRef/manual_time 5031.733999990825 ns/iter 6260.857961088764 ns/iter 0.80
ServiceTrackerFixture/OpenServiceTrackerWithBundleContext/manual_time 7237.814596230978 ns/iter 8061.648099205713 ns/iter 0.90
ServiceTrackerFixture/OpenServiceTrackerWithInterfaceName/manual_time 6381.06328838953 ns/iter 8040.113946673923 ns/iter 0.79
CloseServiceTracker/1000 6039.2250000018075 ns/iter 9215.731179773698 ns/iter 0.66
CloseServiceTracker/1024 6034.509821428661 ns/iter 8926.78023758955 ns/iter 0.68
CloseServiceTracker/2048 6040.737500001114 ns/iter 8992.754496631973 ns/iter 0.67
CloseServiceTracker/4096 6113.033928571099 ns/iter 9078.91705840568 ns/iter 0.67
CloseServiceTracker/8192 6111.817857144177 ns/iter 8817.586082204285 ns/iter 0.69
CloseServiceTracker/16384 6206.0241071415185 ns/iter 9445.6265820233 ns/iter 0.66
CloseServiceTracker/32768 6311.224999998492 ns/iter 9030.753348215268 ns/iter 0.70
CloseServiceTracker/65536 6512.316071428309 ns/iter 9456.750639504813 ns/iter 0.69
CloseServiceTracker/131072 6564.1491071427745 ns/iter 9467.210937501137 ns/iter 0.69
CloseServiceTracker/262144 6577.8705357162025 ns/iter 9859.438573934834 ns/iter 0.67
CloseServiceTracker/524288 6637.008928572234 ns/iter 9592.576562500455 ns/iter 0.69
CloseServiceTracker/1000000 7001.12723214273 ns/iter 9966.540625001131 ns/iter 0.70
ServiceTrackerFixture/ServiceTrackerScalability/1 31871.5054843542 ns/iter 42536.502919581624 ns/iter 0.75
ServiceTrackerFixture/ServiceTrackerScalability/4000 16349560.975607723 ns/iter 23381982.142861295 ns/iter 0.70
ServiceTrackerFixture/ServiceTrackerScalability/10000 49482764.285715215 ns/iter 70833763.63636324 ns/iter 0.70
ServiceTrackerFixture/MultipleImplOneInterfaceServiceTrackerScalability/1 31671.992026796288 ns/iter 40855.458185819974 ns/iter 0.78
ServiceTrackerFixture/MultipleImplOneInterfaceServiceTrackerScalability/4000 125554099.99996907 ns/iter 171722133.33333275 ns/iter 0.73
ServiceTrackerFixture/MultipleImplOneInterfaceServiceTrackerScalability/10000 313586050.0000263 ns/iter 410388699.9999986 ns/iter 0.76
ServiceTrackerFixture/ServiceTrackerScalabilityWithLDAPFilter/1 28580.05000000016 ns/iter 37273.81052829184 ns/iter 0.77
ServiceTrackerFixture/ServiceTrackerScalabilityWithLDAPFilter/4000 3182639.2857143204 ns/iter 4238400.000001264 ns/iter 0.75
ServiceTrackerFixture/ServiceTrackerScalabilityWithLDAPFilter/10000 8687065.33333352 ns/iter 13745588.00000159 ns/iter 0.63
AnyMapPerfTestFixture/HappyPath/1 419.869351318893 ns/iter 536.7902999998933 ns/iter 0.78
AnyMapPerfTestFixture/HappyPath/3 1214.3012500001048 ns/iter 1714.2598214283971 ns/iter 0.71
AnyMapPerfTestFixture/HappyPath/7 2778.4376672024136 ns/iter 3670.2277317361127 ns/iter 0.76
AnyMapPerfTestFixture/HappyPath/11 4368.117500000323 ns/iter 5653.58900000092 ns/iter 0.77
AnyMapPerfTestFixture/HappyPath/15 5953.089285715204 ns/iter 8004.412500000058 ns/iter 0.74
AnyMapPerfTestFixture/HappyPath/18 7147.057142857096 ns/iter 9249.09665581729 ns/iter 0.77
AnyMapPerfTestFixture/HappyPath/20 7936.675223214301 ns/iter 10163.405520511058 ns/iter 0.78
AnyMapPerfTestFixture/ErrorPath/1 5650.425000001178 ns/iter 6988.642857143544 ns/iter 0.81
AnyMapPerfTestFixture/ErrorPath/3 8080.801339284603 ns/iter 10201.907812497524 ns/iter 0.79
AnyMapPerfTestFixture/ErrorPath/7 12516.935192251109 ns/iter 15485.041584637047 ns/iter 0.81
AnyMapPerfTestFixture/ErrorPath/11 16825.985218653197 ns/iter 21331.03437500239 ns/iter 0.79
AnyMapPerfTestFixture/ErrorPath/15 21238.117346641975 ns/iter 28181.20089286375 ns/iter 0.75
AnyMapPerfTestFixture/ErrorPath/18 24520.84642857244 ns/iter 31387.928571433575 ns/iter 0.78
AnyMapPerfTestFixture/ErrorPath/20 26564.933783624947 ns/iter 34396.19917501437 ns/iter 0.77
AnyMapPerfTestFixture/HappyPath_NoThrowOverload/1 636.7636607141744 ns/iter 872.9926459853731 ns/iter 0.73
AnyMapPerfTestFixture/HappyPath_NoThrowOverload/3 1726.0834869977934 ns/iter 2406.840728972863 ns/iter 0.72
AnyMapPerfTestFixture/HappyPath_NoThrowOverload/7 3853.1357979717422 ns/iter 5060.287999999673 ns/iter 0.76
AnyMapPerfTestFixture/HappyPath_NoThrowOverload/11 5976.501785714358 ns/iter 8098.67299107227 ns/iter 0.74
AnyMapPerfTestFixture/HappyPath_NoThrowOverload/15 8108.045758929348 ns/iter 10721.451562499597 ns/iter 0.76
AnyMapPerfTestFixture/HappyPath_NoThrowOverload/18 9719.371875000603 ns/iter 12999.76607143094 ns/iter 0.75
AnyMapPerfTestFixture/HappyPath_NoThrowOverload/20 10823.073437499886 ns/iter 14515.086986218834 ns/iter 0.75
AnyMapPerfTestFixture/ErrorPath_NoThrowOverload/1 416.7679066378352 ns/iter 558.9758928571038 ns/iter 0.75
AnyMapPerfTestFixture/ErrorPath_NoThrowOverload/3 1498.7194196426199 ns/iter 1957.7961230320254 ns/iter 0.77
AnyMapPerfTestFixture/ErrorPath_NoThrowOverload/7 3620.7615549310435 ns/iter 4910.562000000027 ns/iter 0.74
AnyMapPerfTestFixture/ErrorPath_NoThrowOverload/11 5737.093749999644 ns/iter 7482.308035713052 ns/iter 0.77
AnyMapPerfTestFixture/ErrorPath_NoThrowOverload/15 7928.936383928078 ns/iter 10433.590625002153 ns/iter 0.76
AnyMapPerfTestFixture/ErrorPath_NoThrowOverload/18 9528.679336251134 ns/iter 12987.133928573614 ns/iter 0.73
AnyMapPerfTestFixture/ErrorPath_NoThrowOverload/20 10528.115499484116 ns/iter 14427.28571428274 ns/iter 0.73
BundleInstallFixture/BundleInstallCppFramework/manual_time 218534.1403616312 ns/iter 290493.34428923635 ns/iter 0.75
BundleInstallFixture/LargeBundleInstallCppFramework/manual_time 211396.87215305195 ns/iter 304050.99150141573 ns/iter 0.70
ConstructFilterFromString 612.2074107143558 ns/iter 825.1391852058669 ns/iter 0.74
ConstructNonTrivialFilterFromString 971.5300127098017 ns/iter 1275.1466071429313 ns/iter 0.76
MatchFilterWithAnyMap/Simple 405.0259506684539 ns/iter 531.1679999999797 ns/iter 0.76
MatchFilterWithAnyMap/Complex 458.79545955250734 ns/iter 577.1787500001275 ns/iter 0.79
MatchFilterWithBundle/Simple 203.9492431272929 ns/iter 258.8407499999741 ns/iter 0.79
MatchFilterWithBundle/Complex 337.968064648553 ns/iter 435.5031144865207 ns/iter 0.78
MatchFilterWithServiceReference/Simple 205.7563881358232 ns/iter 255.7494154352705 ns/iter 0.80
MatchFilterWithServiceReference/Complex 248.15357142853958 ns/iter 320.96798203484224 ns/iter 0.77
ConstructFilterIncremental 2524.065000000064 ns/iter 2757.3416261864413 ns/iter 0.92
ConstructFilterNotOperator 1134.2171875000417 ns/iter 1214.9796428571692 ns/iter 0.93
ServiceFixture/GetServiceReferenceByInterface 1462.5013392855888 ns/iter 1821.491229342938 ns/iter 0.80
ServiceFixture/GetServiceReferenceByClassName 1241.9708928571742 ns/iter 1525.6650944207483 ns/iter 0.81
ServiceFixture/GetAllServiceReferencesByInterface 1225.754285714434 ns/iter 1554.2685267858149 ns/iter 0.79
ServiceFixture/GetAllServiceReferencesByClassName 915.3632074271343 ns/iter 1196.5746875002735 ns/iter 0.76
ServiceFixture/GetAllServiceReferencesByClassNameAndLDAPFilter 750.3761382247826 ns/iter 932.2276195413965 ns/iter 0.80
ServiceFixture/GetAllServiceReferencesByInterfaceAndLDAPFilter 708.7345982143794 ns/iter 900.7841514356185 ns/iter 0.79

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.