From 4662be3aac1c44c53d0722b9d6a6ca947416cfd7 Mon Sep 17 00:00:00 2001 From: Liao Date: Thu, 23 Jan 2025 10:18:12 -0800 Subject: [PATCH] make it easier to see the diff Signed-off-by: Liao --- csvexport/src/csvexport.cpp | 263 ++++++++++++++++++------------------ 1 file changed, 131 insertions(+), 132 deletions(-) diff --git a/csvexport/src/csvexport.cpp b/csvexport/src/csvexport.cpp index 50e5b1b9..d721f0c0 100644 --- a/csvexport/src/csvexport.cpp +++ b/csvexport/src/csvexport.cpp @@ -253,138 +253,7 @@ int main(int argc, char** argv) std::this_thread::sleep_for(std::chrono::milliseconds(10)); } - if (!args.show_gpu) - { - auto& slz = worker.GetSourceLocationZones(); - tracy::Vector slz_selected; - slz_selected.reserve(slz.size()); - - uint32_t total_cnt = 0; - for(auto it = slz.begin(); it != slz.end(); ++it) - { - if(it->second.total != 0) - { - ++total_cnt; - if(args.filter[0] == '\0') - { - slz_selected.push_back_no_space_check(it); - } - else - { - auto name = get_name(it->first, worker); - if(is_substring(args.filter, name, args.case_sensitive)) - { - slz_selected.push_back_no_space_check(it); - } - } - } - } - - std::vector columns; - if (args.unwrap) - { - columns = { - "name", "src_file", "src_line", "ns_since_start", "exec_time_ns", "thread", "value" - }; - } - else - { - columns = { - "name", "src_file", "src_line", "total_ns", "total_perc", - "counts", "mean_ns", "min_ns", "max_ns", "std_ns" - }; - } - std::string header = join(columns, args.separator); - printf("%s\n", header.data()); - - const auto last_time = worker.GetLastTime(); - for(auto& it : slz_selected) - { - std::vector values(columns.size()); - - values[0] = get_name(it->first, worker); - - const auto& srcloc = worker.GetSourceLocation(it->first); - values[1] = worker.GetString(srcloc.file); - values[2] = std::to_string(srcloc.line); - - const auto& zone_data = it->second; - - if (args.unwrap) - { - int i = 0; - for (const auto& zone_thread_data : zone_data.zones) { - const auto zone_event = zone_thread_data.Zone(); - const auto tId = zone_thread_data.Thread(); - const auto start = zone_event->Start(); - const auto end = zone_event->End(); - - values[3] = std::to_string(start); - - auto timespan = end - start; - if (args.self_time) { - timespan -= GetZoneChildTimeFast(worker, *zone_event); - } - values[4] = std::to_string(timespan); - values[5] = std::to_string(tId); - - std::string row = join(values, args.separator); - printf("%s\n", row.data()); - } - } - else - { - const auto time = args.self_time ? zone_data.selfTotal : zone_data.total; - values[3] = std::to_string(time); - values[4] = std::to_string(100. * time / last_time); - - values[5] = std::to_string(zone_data.zones.size()); - - const auto avg = (args.self_time ? zone_data.selfTotal : zone_data.total) - / zone_data.zones.size(); - values[6] = std::to_string(avg); - - const auto tmin = args.self_time ? zone_data.selfMin : zone_data.min; - const auto tmax = args.self_time ? zone_data.selfMax : zone_data.max; - values[7] = std::to_string(tmin); - values[8] = std::to_string(tmax); - - const auto sz = zone_data.zones.size(); - const auto ss = zone_data.sumSq - - 2. * zone_data.total * avg - + avg * avg * sz; - double std = 0; - if( sz > 1 ) - std = sqrt(ss / (sz - 1)); - values[9] = std::to_string(std); - - std::string row = join(values, args.separator); - printf("%s\n", row.data()); - } - } - - if(args.plot && args.unwrap) - { - auto& plots = worker.GetPlots(); - for(const auto& plot : plots) - { - std::vector values(columns.size()); - values[0] = worker.GetString(plot->name); - - for(const auto& val : plot->data) - { - if (args.unwrap) - { - values[3] = std::to_string(val.time.Val()); - values[6] = std::to_string(val.val); - } - std::string row = join(values, args.separator); - printf("%s\n", row.data()); - } - } - } - } - else // only show gpu event statistics + if (args.show_gpu) { auto& gpu_slz = worker.GetGpuSourceLocationZones(); tracy::Vector gpu_slz_selected; @@ -443,6 +312,136 @@ int main(int argc, char** argv) printf( "%s\n", row.data() ); } } + return 0; + } + + auto& slz = worker.GetSourceLocationZones(); + tracy::Vector slz_selected; + slz_selected.reserve(slz.size()); + + uint32_t total_cnt = 0; + for(auto it = slz.begin(); it != slz.end(); ++it) + { + if(it->second.total != 0) + { + ++total_cnt; + if(args.filter[0] == '\0') + { + slz_selected.push_back_no_space_check(it); + } + else + { + auto name = get_name(it->first, worker); + if(is_substring(args.filter, name, args.case_sensitive)) + { + slz_selected.push_back_no_space_check(it); + } + } + } + } + + std::vector columns; + if (args.unwrap) + { + columns = { + "name", "src_file", "src_line", "ns_since_start", "exec_time_ns", "thread", "value" + }; + } + else + { + columns = { + "name", "src_file", "src_line", "total_ns", "total_perc", + "counts", "mean_ns", "min_ns", "max_ns", "std_ns" + }; + } + std::string header = join(columns, args.separator); + printf("%s\n", header.data()); + + const auto last_time = worker.GetLastTime(); + for(auto& it : slz_selected) + { + std::vector values(columns.size()); + + values[0] = get_name(it->first, worker); + + const auto& srcloc = worker.GetSourceLocation(it->first); + values[1] = worker.GetString(srcloc.file); + values[2] = std::to_string(srcloc.line); + + const auto& zone_data = it->second; + + if (args.unwrap) + { + int i = 0; + for (const auto& zone_thread_data : zone_data.zones) { + const auto zone_event = zone_thread_data.Zone(); + const auto tId = zone_thread_data.Thread(); + const auto start = zone_event->Start(); + const auto end = zone_event->End(); + + values[3] = std::to_string(start); + + auto timespan = end - start; + if (args.self_time) { + timespan -= GetZoneChildTimeFast(worker, *zone_event); + } + values[4] = std::to_string(timespan); + values[5] = std::to_string(tId); + + std::string row = join(values, args.separator); + printf("%s\n", row.data()); + } + } + else + { + const auto time = args.self_time ? zone_data.selfTotal : zone_data.total; + values[3] = std::to_string(time); + values[4] = std::to_string(100. * time / last_time); + + values[5] = std::to_string(zone_data.zones.size()); + + const auto avg = (args.self_time ? zone_data.selfTotal : zone_data.total) + / zone_data.zones.size(); + values[6] = std::to_string(avg); + + const auto tmin = args.self_time ? zone_data.selfMin : zone_data.min; + const auto tmax = args.self_time ? zone_data.selfMax : zone_data.max; + values[7] = std::to_string(tmin); + values[8] = std::to_string(tmax); + + const auto sz = zone_data.zones.size(); + const auto ss = zone_data.sumSq + - 2. * zone_data.total * avg + + avg * avg * sz; + double std = 0; + if( sz > 1 ) + std = sqrt(ss / (sz - 1)); + values[9] = std::to_string(std); + + std::string row = join(values, args.separator); + printf("%s\n", row.data()); + } + } + + if(args.plot && args.unwrap) + { + auto& plots = worker.GetPlots(); + for(const auto& plot : plots) + { + std::vector values(columns.size()); + values[0] = worker.GetString(plot->name); + + for(const auto& val : plot->data) + { + if (args.unwrap) + { + values[3] = std::to_string(val.time.Val()); + values[6] = std::to_string(val.val); + } + std::string row = join(values, args.separator); + printf("%s\n", row.data()); + } + } } return 0;