diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/benchmarks/libcxxmap')
3 files changed, 75 insertions, 0 deletions
| diff --git a/packages/Python/lldbsuite/test/benchmarks/libcxxmap/Makefile b/packages/Python/lldbsuite/test/benchmarks/libcxxmap/Makefile new file mode 100644 index 0000000000000..8a7102e347af2 --- /dev/null +++ b/packages/Python/lldbsuite/test/benchmarks/libcxxmap/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules diff --git a/packages/Python/lldbsuite/test/benchmarks/libcxxmap/TestBenchmarkLibcxxMap.py b/packages/Python/lldbsuite/test/benchmarks/libcxxmap/TestBenchmarkLibcxxMap.py new file mode 100644 index 0000000000000..806bc0ee29e24 --- /dev/null +++ b/packages/Python/lldbsuite/test/benchmarks/libcxxmap/TestBenchmarkLibcxxMap.py @@ -0,0 +1,59 @@ +""" +Test lldb data formatter subsystem. +""" + +from __future__ import print_function + + + +import os, time +import lldb +from lldbsuite.test.lldbbench import * +import lldbsuite.test.lldbutil as lldbutil + +class TestBenchmarkLibcxxMap(BenchBase): + +    mydir = TestBase.compute_mydir(__file__) + +    @benchmarks_test +    def test_run_command(self): +        """Benchmark the std::map data formatter (libc++)""" +        self.build() +        self.data_formatter_commands() + +    def setUp(self): +        # Call super's setUp(). +        BenchBase.setUp(self) + +    def data_formatter_commands(self): +        """Benchmark the std::map data formatter (libc++)""" +        self.runCmd("file a.out", CURRENT_EXECUTABLE_SET) + +        bkpt = self.target().FindBreakpointByID(lldbutil.run_break_set_by_source_regexp (self, "break here")) + +        self.runCmd("run", RUN_SUCCEEDED) + +        # The stop reason of the thread should be breakpoint. +        self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, +            substrs = ['stopped', +                       'stop reason = breakpoint']) + +        # This is the function to remove the custom formats in order to have a +        # clean slate for the next test case. +        def cleanup(): +            self.runCmd('type format clear', check=False) +            self.runCmd('type summary clear', check=False) +            self.runCmd('type filter clear', check=False) +            self.runCmd('type synth clear', check=False) +            self.runCmd("settings set target.max-children-count 256", check=False) + +        # Execute the cleanup function during test case tear down. +        self.addTearDownHook(cleanup) +         +        sw = Stopwatch() +         +        sw.start() +        self.expect('frame variable -A map', substrs=['[300]', '300']) +        sw.stop() +             +        print("time to print: %s" % (sw)) diff --git a/packages/Python/lldbsuite/test/benchmarks/libcxxmap/main.cpp b/packages/Python/lldbsuite/test/benchmarks/libcxxmap/main.cpp new file mode 100644 index 0000000000000..45efb26b6b040 --- /dev/null +++ b/packages/Python/lldbsuite/test/benchmarks/libcxxmap/main.cpp @@ -0,0 +1,11 @@ +#include <map> + +int main() +{ +    std::map<int, int> map; +    for (int i = 0; +    i < 1500; +    i++) +        map[i] = i; +    return map.size(); // break here +} | 
