Sort profiled db queries by total time desc
This commit is contained in:
@@ -19,6 +19,9 @@
|
|||||||
|
|
||||||
#include "Database.hpp"
|
#include "Database.hpp"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include <Wt/Http/Response.h>
|
#include <Wt/Http/Response.h>
|
||||||
#include <Wt/Utils.h>
|
#include <Wt/Utils.h>
|
||||||
#include <Wt/WDateTime.h>
|
#include <Wt/WDateTime.h>
|
||||||
@@ -62,14 +65,24 @@ namespace lms::ui
|
|||||||
const std::string cdp{ encodeHttpHeaderField("filename", "LMS_db_query_profiling_" + core::stringUtils::toISO8601String(Wt::WDateTime::currentDateTime()) + ".txt") };
|
const std::string cdp{ encodeHttpHeaderField("filename", "LMS_db_query_profiling_" + core::stringUtils::toISO8601String(Wt::WDateTime::currentDateTime()) + ".txt") };
|
||||||
response.addHeader("Content-Disposition", "attachment; " + cdp);
|
response.addHeader("Content-Disposition", "attachment; " + cdp);
|
||||||
|
|
||||||
|
std::vector<db::IQueryProfiler::QueryStats> entries;
|
||||||
_recorder.visitQueries([&](const db::IQueryProfiler::QueryStats& stats) {
|
_recorder.visitQueries([&](const db::IQueryProfiler::QueryStats& stats) {
|
||||||
|
entries.push_back(stats);
|
||||||
|
});
|
||||||
|
|
||||||
|
std::sort(entries.begin(), entries.end(), [](const db::IQueryProfiler::QueryStats& a, const db::IQueryProfiler::QueryStats& b) {
|
||||||
|
return a.totalTime > b.totalTime;
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const db::IQueryProfiler::QueryStats& stats : entries)
|
||||||
|
{
|
||||||
response.out() << stats.query << '\n';
|
response.out() << stats.query << '\n';
|
||||||
response.out() << "Calls: " << stats.callCount
|
response.out() << "Calls: " << stats.callCount
|
||||||
<< " | Total: " << stats.totalTime.count() << " µs"
|
<< " | Total: " << stats.totalTime.count() << " µs"
|
||||||
<< " | Mean: " << stats.meanTime.count() << " µs"
|
<< " | Mean: " << stats.meanTime.count() << " µs"
|
||||||
<< " | StdDev: " << stats.stdDevTime.count() << " µs\n";
|
<< " | StdDev: " << stats.stdDevTime.count() << " µs\n";
|
||||||
response.out() << stats.plan << "\n-------------------------\n";
|
response.out() << stats.plan << "\n-------------------------\n";
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const db::IQueryProfiler& _recorder;
|
const db::IQueryProfiler& _recorder;
|
||||||
|
|||||||
Reference in New Issue
Block a user