diff options
| -rw-r--r-- | lldb/tools/lldb-perf/darwin/formatters/formatters.cpp | 38 | ||||
| -rw-r--r-- | lldb/tools/lldb-perf/lib/Measurement.h | 26 |
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; }; |

