mirror of
https://github.com/wolfpld/tracy
synced 2025-04-30 12:53:51 +00:00
make it easier to see the diff
Signed-off-by: Liao <dezhliao@amd.com>
This commit is contained in:
parent
e19a823c37
commit
4662be3aac
@ -253,138 +253,7 @@ int main(int argc, char** argv)
|
|||||||
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!args.show_gpu)
|
if (args.show_gpu)
|
||||||
{
|
|
||||||
auto& slz = worker.GetSourceLocationZones();
|
|
||||||
tracy::Vector<decltype(slz.begin())> 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<const char*> 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<std::string> 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<std::string> 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
|
|
||||||
{
|
{
|
||||||
auto& gpu_slz = worker.GetGpuSourceLocationZones();
|
auto& gpu_slz = worker.GetGpuSourceLocationZones();
|
||||||
tracy::Vector<decltype( gpu_slz.begin() )> gpu_slz_selected;
|
tracy::Vector<decltype( gpu_slz.begin() )> gpu_slz_selected;
|
||||||
@ -443,6 +312,136 @@ int main(int argc, char** argv)
|
|||||||
printf( "%s\n", row.data() );
|
printf( "%s\n", row.data() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto& slz = worker.GetSourceLocationZones();
|
||||||
|
tracy::Vector<decltype(slz.begin())> 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<const char*> 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<std::string> 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<std::string> 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;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user