mirror of
https://github.com/BeamMP/BeamMP-Server.git
synced 2026-04-02 22:06:26 +00:00
add custom profiling via Debug(Start|Stop)Profile
This commit is contained in:
@@ -21,6 +21,7 @@ struct Stats {
|
||||
double stddev;
|
||||
double min;
|
||||
double max;
|
||||
size_t n;
|
||||
};
|
||||
|
||||
/// Calculates and stores the moving average over K samples of execution time data
|
||||
|
||||
@@ -256,6 +256,7 @@ private:
|
||||
sol::table Lua_FS_ListDirectories(const std::string& Path);
|
||||
|
||||
prof::UnitProfileCollection mProfile {};
|
||||
std::unordered_map<std::string, prof::TimePoint> mProfileStarts;
|
||||
|
||||
std::string mName;
|
||||
TLuaStateId mStateId;
|
||||
|
||||
@@ -30,6 +30,7 @@ prof::Stats prof::UnitExecutionTime::stats() const {
|
||||
if (measurements->size() == 0) {
|
||||
return result;
|
||||
}
|
||||
result.n = measurements->size();
|
||||
result.max = std::numeric_limits<double>::min();
|
||||
result.min = std::numeric_limits<double>::max();
|
||||
Duration sum {};
|
||||
|
||||
@@ -859,9 +859,20 @@ TLuaEngine::StateThreadData::StateThreadData(const std::string& Name, TLuaStateI
|
||||
Result[name]["stddev"] = stat.stddev;
|
||||
Result[name]["min"] = stat.min;
|
||||
Result[name]["max"] = stat.max;
|
||||
Result[name]["n"] = stat.n;
|
||||
}
|
||||
return Result;
|
||||
});
|
||||
UtilTable.set_function("DebugStartProfile", [this](const std::string& name) {
|
||||
mProfileStarts[name] = prof::now();
|
||||
});
|
||||
UtilTable.set_function("DebugStopProfile", [this](const std::string& name) {
|
||||
if (!mProfileStarts.contains(name)) {
|
||||
beammp_lua_errorf("DebugStopProfile('{}') failed, because a profile for '{}' wasn't started", name, name);
|
||||
return;
|
||||
}
|
||||
mProfile.add_sample(name, prof::duration(mProfileStarts.at(name), prof::now()));
|
||||
});
|
||||
|
||||
auto HttpTable = StateView.create_named_table("Http");
|
||||
HttpTable.set_function("CreateConnection", [this](const std::string& host, uint16_t port) {
|
||||
|
||||
Reference in New Issue
Block a user