1d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton//===-- formatters.cpp ------------------------------------------*- C++ -*-===// 2c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata// 3d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton// The LLVM Compiler Infrastructure 4c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata// 5d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton// This file is distributed under the University of Illinois Open Source 6d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton// License. See LICENSE.TXT for details. 7c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata// 8d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton//===----------------------------------------------------------------------===// 9c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 10c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata#include <CoreFoundation/CoreFoundation.h> 11c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 12c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata#include "lldb-perf/lib/Timer.h" 13c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata#include "lldb-perf/lib/Metric.h" 14c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata#include "lldb-perf/lib/Measurement.h" 15c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata#include "lldb-perf/lib/TestCase.h" 16c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata#include "lldb-perf/lib/Xcode.h" 17c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 18c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata#include <iostream> 19c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata#include <unistd.h> 20c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata#include <fstream> 21c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 22af222500aa2ce2b18149277e561cdf75f2115df2Greg Claytonusing namespace lldb_perf; 23c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 24c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granataclass FormattersTest : public TestCase 25c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata{ 26c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granatapublic: 27c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata FormattersTest () : TestCase() 28c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata { 29c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_std_vector_measurement = CreateTimeMeasurement([] (SBValue value) -> void { 30af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton lldb_perf::Xcode::FetchVariable (value,1,false); 31c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "std-vector", "time to dump an std::vector"); 32c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_std_list_measurement = CreateTimeMeasurement([] (SBValue value) -> void { 33af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton lldb_perf::Xcode::FetchVariable (value,1,false); 34c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "std-list", "time to dump an std::list"); 35c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_std_map_measurement = CreateTimeMeasurement([] (SBValue value) -> void { 36af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton lldb_perf::Xcode::FetchVariable (value,1,false); 37c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "std-map", "time to dump an std::map"); 3821ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata 3921ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata // use this in manual mode 4021ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata m_dump_std_string_measurement = CreateTimeMeasurement([] () -> void { 41c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "std-string", "time to dump an std::string"); 42c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 43c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsstring_measurement = CreateTimeMeasurement([] (SBValue value) -> void { 44af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton lldb_perf::Xcode::FetchVariable (value,0,false); 45c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "ns-string", "time to dump an NSString"); 46c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 47c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsarray_measurement = CreateTimeMeasurement([] (SBValue value) -> void { 48af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton lldb_perf::Xcode::FetchVariable (value,1,false); 49c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "ns-array", "time to dump an NSArray"); 50c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 51c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsdictionary_measurement = CreateTimeMeasurement([] (SBValue value) -> void { 52af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton lldb_perf::Xcode::FetchVariable (value,1,false); 53c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "ns-dictionary", "time to dump an NSDictionary"); 54c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 55c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsset_measurement = CreateTimeMeasurement([] (SBValue value) -> void { 56af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton lldb_perf::Xcode::FetchVariable (value,1,false); 57c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "ns-set", "time to dump an NSSet"); 58c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 59c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsbundle_measurement = CreateTimeMeasurement([] (SBValue value) -> void { 60af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton lldb_perf::Xcode::FetchVariable (value,1,false); 61c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "ns-bundle", "time to dump an NSBundle"); 62c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 63c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsdate_measurement = CreateTimeMeasurement([] (SBValue value) -> void { 64af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton lldb_perf::Xcode::FetchVariable (value,0,false); 65c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata }, "ns-date", "time to dump an NSDate"); 66c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata } 67c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 68c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata virtual 69c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata ~FormattersTest () 70c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata { 71c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata } 72c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 7391c570abdc2eb7f0d9bc5affb086d515838ebc39Greg Clayton virtual bool 74b1b36ec6dcfbe7c7dfa423d50cb7c2296deca68eEnrico Granata Setup (int& argc, const char**& argv) 75c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata { 76c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_app_path.assign(argv[1]); 77c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_out_path.assign(argv[2]); 78c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_target = m_debugger.CreateTarget(m_app_path.c_str()); 79c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_target.BreakpointCreateByName("main"); 8091c570abdc2eb7f0d9bc5affb086d515838ebc39Greg Clayton SBLaunchInfo launch_info(argv); 8191c570abdc2eb7f0d9bc5affb086d515838ebc39Greg Clayton return Launch (launch_info); 82c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata } 83c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 84c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata void 85c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata DoTest () 86c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata { 8791c570abdc2eb7f0d9bc5affb086d515838ebc39Greg Clayton SBFrame frame_zero(m_thread.GetFrameAtIndex(0)); 88c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 89c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsarray_measurement(frame_zero.FindVariable("nsarray", lldb::eDynamicCanRunTarget)); 90c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsarray_measurement(frame_zero.FindVariable("nsmutablearray", lldb::eDynamicCanRunTarget)); 91c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 92c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsdictionary_measurement(frame_zero.FindVariable("nsdictionary", lldb::eDynamicCanRunTarget)); 93c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsdictionary_measurement(frame_zero.FindVariable("nsmutabledictionary", lldb::eDynamicCanRunTarget)); 94c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 95c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsstring_measurement(frame_zero.FindVariable("str0", lldb::eDynamicCanRunTarget)); 96c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsstring_measurement(frame_zero.FindVariable("str1", lldb::eDynamicCanRunTarget)); 97c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsstring_measurement(frame_zero.FindVariable("str2", lldb::eDynamicCanRunTarget)); 98c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsstring_measurement(frame_zero.FindVariable("str3", lldb::eDynamicCanRunTarget)); 99c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsstring_measurement(frame_zero.FindVariable("str4", lldb::eDynamicCanRunTarget)); 100c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 101c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsdate_measurement(frame_zero.FindVariable("me", lldb::eDynamicCanRunTarget)); 102c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsdate_measurement(frame_zero.FindVariable("cutie", lldb::eDynamicCanRunTarget)); 103c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsdate_measurement(frame_zero.FindVariable("mom", lldb::eDynamicCanRunTarget)); 104c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsdate_measurement(frame_zero.FindVariable("dad", lldb::eDynamicCanRunTarget)); 105c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsdate_measurement(frame_zero.FindVariable("today", lldb::eDynamicCanRunTarget)); 106c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 107c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsbundle_measurement(frame_zero.FindVariable("bundles", lldb::eDynamicCanRunTarget)); 108c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsbundle_measurement(frame_zero.FindVariable("frameworks", lldb::eDynamicCanRunTarget)); 109c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 110c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsset_measurement(frame_zero.FindVariable("nsset", lldb::eDynamicCanRunTarget)); 111c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_nsset_measurement(frame_zero.FindVariable("nsmutableset", lldb::eDynamicCanRunTarget)); 112c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 113c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_std_vector_measurement(frame_zero.FindVariable("vector", lldb::eDynamicCanRunTarget)); 114c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_std_list_measurement(frame_zero.FindVariable("list", lldb::eDynamicCanRunTarget)); 115c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata m_dump_std_map_measurement(frame_zero.FindVariable("map", lldb::eDynamicCanRunTarget)); 116c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 11721ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata auto sstr0 = frame_zero.FindVariable("sstr0", lldb::eDynamicCanRunTarget); 11821ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata auto sstr1 = frame_zero.FindVariable("sstr1", lldb::eDynamicCanRunTarget); 11921ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata auto sstr2 = frame_zero.FindVariable("sstr2", lldb::eDynamicCanRunTarget); 12021ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata auto sstr3 = frame_zero.FindVariable("sstr3", lldb::eDynamicCanRunTarget); 12121ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata auto sstr4 = frame_zero.FindVariable("sstr4", lldb::eDynamicCanRunTarget); 12221ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata 12375fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Start(); 12421ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata Xcode::FetchVariable(sstr0,0,false); 12575fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Stop(); 12621ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata 12775fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Start(); 12821ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata Xcode::FetchVariable(sstr1,0,false); 12975fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Stop(); 13021ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata 13175fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Start(); 13221ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata Xcode::FetchVariable(sstr2,0,false); 13375fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Stop(); 13421ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata 13575fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Start(); 13621ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata Xcode::FetchVariable(sstr3,0,false); 13775fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Stop(); 13821ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata 13975fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Start(); 14021ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata Xcode::FetchVariable(sstr4,0,false); 14175fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton m_dump_std_string_measurement.Stop(); 14221ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata 143c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata } 144c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 145af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton virtual void 146af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton TestStep (int counter, ActionWanted &next_action) 147c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata { 148af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton switch (counter) 149c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata { 150af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 0: 1517905badf63cdca9b5eb26a81976edcaf67890c92Enrico Granata m_target.BreakpointCreateByLocation("fmts_tester.mm", 78); 152af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 153af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 154af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 1: 155af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 156af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 157af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 158af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 2: 159af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 160af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 161af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 162af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 3: 163af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 164af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 165af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 166af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 4: 167af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 168af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 169af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 170af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 5: 171af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 172af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 173af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 174af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 6: 175af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 176af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 177af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 178af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 7: 179af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 180af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 181af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 182af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 8: 183af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 184af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 185af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 186af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 9: 187af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 188af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 189af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 190af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton case 10: 191af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton DoTest (); 192af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Continue(); 193af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 194af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton default: 195af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton next_action.Kill(); 196af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton break; 197c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata } 198c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata } 199c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 2009de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton virtual void 2019de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton WriteResults (Results &results) 202c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata { 2034d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_std_vector_measurement.WriteAverageAndStandardDeviation(results); 2044d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_std_list_measurement.WriteAverageAndStandardDeviation(results); 2054d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_std_map_measurement.WriteAverageAndStandardDeviation(results); 2064d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_std_string_measurement.WriteAverageAndStandardDeviation(results); 2074d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata 2084d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_nsstring_measurement.WriteAverageAndStandardDeviation(results); 2094d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_nsarray_measurement.WriteAverageAndStandardDeviation(results); 2104d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_nsdictionary_measurement.WriteAverageAndStandardDeviation(results); 2114d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_nsset_measurement.WriteAverageAndStandardDeviation(results); 2124d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_nsbundle_measurement.WriteAverageAndStandardDeviation(results); 2134d77c182b3b4fd418ccb488469aa18262bfe481bEnrico Granata m_dump_nsdate_measurement.WriteAverageAndStandardDeviation(results); 2149de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton results.Write(m_out_path.c_str()); 215c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata } 216c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 217c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granataprivate: 218c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata // C++ formatters 219c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TimeMeasurement<std::function<void(SBValue)>> m_dump_std_vector_measurement; 220c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TimeMeasurement<std::function<void(SBValue)>> m_dump_std_list_measurement; 221c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TimeMeasurement<std::function<void(SBValue)>> m_dump_std_map_measurement; 22221ac3cbd69627081b1b35f1ff3fa50e72f751455Enrico Granata TimeMeasurement<std::function<void()>> m_dump_std_string_measurement; 223c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 224c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata // Cocoa formatters 225c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TimeMeasurement<std::function<void(SBValue)>> m_dump_nsstring_measurement; 226c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TimeMeasurement<std::function<void(SBValue)>> m_dump_nsarray_measurement; 227c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TimeMeasurement<std::function<void(SBValue)>> m_dump_nsdictionary_measurement; 228c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TimeMeasurement<std::function<void(SBValue)>> m_dump_nsset_measurement; 229c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TimeMeasurement<std::function<void(SBValue)>> m_dump_nsbundle_measurement; 230c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TimeMeasurement<std::function<void(SBValue)>> m_dump_nsdate_measurement; 231c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 232c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata // useful files 233c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata std::string m_app_path; 234c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata std::string m_out_path; 235c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata}; 236c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 237c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata// argv[1] == path to app 238c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata// argv[2] == path to result 239c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granataint main(int argc, const char * argv[]) 240c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata{ 241c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata FormattersTest frmtest; 242c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata frmtest.SetVerbose(true); 243c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata TestCase::Run(frmtest,argc,argv); 244c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata return 0; 245c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata} 246c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 247