mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-22 12:39:59 +00:00
Measure total time for NavMesh build from first pop
This commit is contained in:
parent
c26773bd29
commit
f268ec5d34
@ -105,6 +105,8 @@ namespace DetourNavigator
|
|||||||
|
|
||||||
const auto start = std::chrono::steady_clock::now();
|
const auto start = std::chrono::steady_clock::now();
|
||||||
|
|
||||||
|
setFirstStart(start);
|
||||||
|
|
||||||
const auto recastMesh = getRecastMesh();
|
const auto recastMesh = getRecastMesh();
|
||||||
|
|
||||||
const auto status = updateNavMesh(job.mAgentHalfExtents, *recastMesh, job.mChangedTile, mSettings,
|
const auto status = updateNavMesh(job.mAgentHalfExtents, *recastMesh, job.mChangedTile, mSettings,
|
||||||
@ -117,7 +119,8 @@ namespace DetourNavigator
|
|||||||
using FloatMs = std::chrono::duration<float, std::milli>;
|
using FloatMs = std::chrono::duration<float, std::milli>;
|
||||||
|
|
||||||
log("cache updated for agent=", job.mAgentHalfExtents, " status=", status,
|
log("cache updated for agent=", job.mAgentHalfExtents, " status=", status,
|
||||||
" time=", std::chrono::duration_cast<FloatMs>(finish - start).count(), "ms");
|
" time=", std::chrono::duration_cast<FloatMs>(finish - start).count(), "ms",
|
||||||
|
" total_time=", std::chrono::duration_cast<FloatMs>(finish - getFirstStart()).count(), "ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::optional<AsyncNavMeshUpdater::Job> AsyncNavMeshUpdater::getNextJob()
|
boost::optional<AsyncNavMeshUpdater::Job> AsyncNavMeshUpdater::getNextJob()
|
||||||
@ -168,4 +171,17 @@ namespace DetourNavigator
|
|||||||
const std::lock_guard<std::mutex> lock(mRecastMeshMutex);
|
const std::lock_guard<std::mutex> lock(mRecastMeshMutex);
|
||||||
mRecastMesh = value;
|
mRecastMesh = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::chrono::steady_clock::time_point AsyncNavMeshUpdater::getFirstStart()
|
||||||
|
{
|
||||||
|
const std::lock_guard<std::mutex> lock(mFirstStartMutex);
|
||||||
|
return *mFirstStart;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AsyncNavMeshUpdater::setFirstStart(const std::chrono::steady_clock::time_point& value)
|
||||||
|
{
|
||||||
|
const std::lock_guard<std::mutex> lock(mFirstStartMutex);
|
||||||
|
if (!mFirstStart)
|
||||||
|
mFirstStart = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
#include <boost/optional.hpp>
|
#include <boost/optional.hpp>
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
#include <chrono>
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
#include <map>
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
@ -58,6 +58,8 @@ namespace DetourNavigator
|
|||||||
Jobs mJobs;
|
Jobs mJobs;
|
||||||
std::mutex mRecastMeshMutex;
|
std::mutex mRecastMeshMutex;
|
||||||
std::shared_ptr<RecastMesh> mRecastMesh;
|
std::shared_ptr<RecastMesh> mRecastMesh;
|
||||||
|
std::mutex mFirstStartMutex;
|
||||||
|
boost::optional<std::chrono::steady_clock::time_point> mFirstStart;
|
||||||
std::thread mThread;
|
std::thread mThread;
|
||||||
|
|
||||||
void process() throw();
|
void process() throw();
|
||||||
@ -73,6 +75,10 @@ namespace DetourNavigator
|
|||||||
std::shared_ptr<RecastMesh> getRecastMesh();
|
std::shared_ptr<RecastMesh> getRecastMesh();
|
||||||
|
|
||||||
void setRecastMesh(const std::shared_ptr<RecastMesh>& value);
|
void setRecastMesh(const std::shared_ptr<RecastMesh>& value);
|
||||||
|
|
||||||
|
std::chrono::steady_clock::time_point getFirstStart();
|
||||||
|
|
||||||
|
void setFirstStart(const std::chrono::steady_clock::time_point& value);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user