summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/tools/lldb-perf/darwin/formatters/formatters.cpp38
-rw-r--r--lldb/tools/lldb-perf/lib/Measurement.h26
2 files changed, 54 insertions, 10 deletions
diff --git a/lldb/tools/lldb-perf/darwin/formatters/formatters.cpp b/lldb/tools/lldb-perf/darwin/formatters/formatters.cpp
index 5e0c948a5eb..1d516852e24 100644
--- a/lldb/tools/lldb-perf/darwin/formatters/formatters.cpp
+++ b/lldb/tools/lldb-perf/darwin/formatters/formatters.cpp
@@ -34,8 +34,9 @@ public:
m_dump_std_map_measurement = CreateTimeMeasurement([] (SBValue value) -> void {
lldb_perf::Xcode::FetchVariable (value,1,false);
}, "std-map", "time to dump an std::map");
- m_dump_std_string_measurement = CreateTimeMeasurement([] (SBValue value) -> void {
- lldb_perf::Xcode::FetchVariable (value,1,false);
+
+ // use this in manual mode
+ m_dump_std_string_measurement = CreateTimeMeasurement([] () -> void {
}, "std-string", "time to dump an std::string");
m_dump_nsstring_measurement = CreateTimeMeasurement([] (SBValue value) -> void {
@@ -112,11 +113,32 @@ public:
m_dump_std_list_measurement(frame_zero.FindVariable("list", lldb::eDynamicCanRunTarget));
m_dump_std_map_measurement(frame_zero.FindVariable("map", lldb::eDynamicCanRunTarget));
- m_dump_std_string_measurement(frame_zero.FindVariable("sstr0", lldb::eDynamicCanRunTarget));
- m_dump_std_string_measurement(frame_zero.FindVariable("sstr1", lldb::eDynamicCanRunTarget));
- m_dump_std_string_measurement(frame_zero.FindVariable("sstr2", lldb::eDynamicCanRunTarget));
- m_dump_std_string_measurement(frame_zero.FindVariable("sstr3", lldb::eDynamicCanRunTarget));
- m_dump_std_string_measurement(frame_zero.FindVariable("sstr4", lldb::eDynamicCanRunTarget));
+ auto sstr0 = frame_zero.FindVariable("sstr0", lldb::eDynamicCanRunTarget);
+ auto sstr1 = frame_zero.FindVariable("sstr1", lldb::eDynamicCanRunTarget);
+ auto sstr2 = frame_zero.FindVariable("sstr2", lldb::eDynamicCanRunTarget);
+ auto sstr3 = frame_zero.FindVariable("sstr3", lldb::eDynamicCanRunTarget);
+ auto sstr4 = frame_zero.FindVariable("sstr4", lldb::eDynamicCanRunTarget);
+
+ m_dump_std_string_measurement.start();
+ Xcode::FetchVariable(sstr0,0,false);
+ m_dump_std_string_measurement.stop();
+
+ m_dump_std_string_measurement.start();
+ Xcode::FetchVariable(sstr1,0,false);
+ m_dump_std_string_measurement.stop();
+
+ m_dump_std_string_measurement.start();
+ Xcode::FetchVariable(sstr2,0,false);
+ m_dump_std_string_measurement.stop();
+
+ m_dump_std_string_measurement.start();
+ Xcode::FetchVariable(sstr3,0,false);
+ m_dump_std_string_measurement.stop();
+
+ m_dump_std_string_measurement.start();
+ Xcode::FetchVariable(sstr4,0,false);
+ m_dump_std_string_measurement.stop();
+
}
virtual void
@@ -202,7 +224,7 @@ private:
TimeMeasurement<std::function<void(SBValue)>> m_dump_std_vector_measurement;
TimeMeasurement<std::function<void(SBValue)>> m_dump_std_list_measurement;
TimeMeasurement<std::function<void(SBValue)>> m_dump_std_map_measurement;
- TimeMeasurement<std::function<void(SBValue)>> m_dump_std_string_measurement;
+ TimeMeasurement<std::function<void()>> m_dump_std_string_measurement;
// Cocoa formatters
TimeMeasurement<std::function<void(SBValue)>> m_dump_nsstring_measurement;
diff --git a/lldb/tools/lldb-perf/lib/Measurement.h b/lldb/tools/lldb-perf/lib/Measurement.h
index 45e556212db..798499bf52d 100644
--- a/lldb/tools/lldb-perf/lib/Measurement.h
+++ b/lldb/tools/lldb-perf/lib/Measurement.h
@@ -23,12 +23,14 @@ public:
Measurement () {}
Measurement (Action act, const char* name = NULL, const char* descr = NULL) :
+ m_gauge (),
m_action (act),
m_metric (Metric<typename GaugeType::SizeType>(name,descr))
{}
template <typename GaugeType_Rhs, typename Action_Rhs>
Measurement (const Measurement<GaugeType_Rhs, Action_Rhs>& rhs) :
+ m_gauge(rhs.gauge()),
m_action(rhs.action()),
m_metric(rhs.metric())
{
@@ -38,8 +40,7 @@ public:
void
operator () (Args... args)
{
- GaugeType gauge;
- m_metric.append (gauge.gauge(m_action,args...));
+ m_metric.append (m_gauge.gauge(m_action,args...));
}
virtual const Metric<typename GaugeType::SizeType>&
@@ -48,6 +49,26 @@ public:
return m_metric;
}
+ void
+ start ()
+ {
+ m_gauge.start();
+ }
+
+ typename GaugeType::SizeType
+ stop ()
+ {
+ auto value = m_gauge.stop();
+ m_metric.append(value);
+ return value;
+ }
+
+ virtual const GaugeType&
+ gauge () const
+ {
+ return m_gauge;
+ }
+
virtual const Action&
action () const
{
@@ -61,6 +82,7 @@ public:
}
protected:
+ GaugeType m_gauge;
Action m_action;
Metric<typename GaugeType::SizeType> m_metric;
};
OpenPOWER on IntegriCloud