summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPatric Stout <truebrain@openttd.org>2021-04-30 11:57:37 +0200
committerPatric Stout <github@truebrain.nl>2021-04-30 12:48:41 +0200
commit665a3928e2f07e6ee1faed1c8b08fe3a68fbc37a (patch)
tree8cd661bfeeddb5a618a2c22519f2b3d89507dfbb /src
parente162aff7a3d1dfcde1a9d02780235c617b6d4983 (diff)
downloadopenttd-665a3928e2f07e6ee1faed1c8b08fe3a68fbc37a.tar.xz
Remove: performance measurements in YAPF
YAPF was constantly measuring its performance, but only at certain debug-levels this information was shown. Now after years, I sincerely wonder if anyone still knows about this feature and who still use it. Especially with the new framerate window, this detailed performance is not as meaningful anymore as it once was.
Diffstat (limited to 'src')
-rw-r--r--src/pathfinder/CMakeLists.txt1
-rw-r--r--src/pathfinder/follow_track.hpp18
-rw-r--r--src/pathfinder/npf/npf.cpp1
-rw-r--r--src/pathfinder/pf_performance_timer.hpp80
-rw-r--r--src/pathfinder/yapf/yapf.hpp1
-rw-r--r--src/pathfinder/yapf/yapf_base.hpp40
-rw-r--r--src/pathfinder/yapf/yapf_costcache.hpp8
-rw-r--r--src/pathfinder/yapf/yapf_costrail.hpp8
-rw-r--r--src/pathfinder/yapf/yapf_rail.cpp2
9 files changed, 21 insertions, 138 deletions
diff --git a/src/pathfinder/CMakeLists.txt b/src/pathfinder/CMakeLists.txt
index 2e275706f..061637162 100644
--- a/src/pathfinder/CMakeLists.txt
+++ b/src/pathfinder/CMakeLists.txt
@@ -5,5 +5,4 @@ add_files(
follow_track.hpp
pathfinder_func.h
pathfinder_type.h
- pf_performance_timer.hpp
)
diff --git a/src/pathfinder/follow_track.hpp b/src/pathfinder/follow_track.hpp
index 9b95578fd..7e5e0e39b 100644
--- a/src/pathfinder/follow_track.hpp
+++ b/src/pathfinder/follow_track.hpp
@@ -18,7 +18,6 @@
#include "../tunnelbridge_map.h"
#include "../depot_map.h"
#include "pathfinder_func.h"
-#include "pf_performance_timer.hpp"
/**
* Track follower helper template class (can serve pathfinders and vehicle
@@ -49,34 +48,32 @@ struct CFollowTrackT
bool m_is_station; ///< last turn passed station
int m_tiles_skipped; ///< number of skipped tunnel or station tiles
ErrorCode m_err;
- CPerformanceTimer *m_pPerf;
RailTypes m_railtypes;
- inline CFollowTrackT(const VehicleType *v = nullptr, RailTypes railtype_override = INVALID_RAILTYPES, CPerformanceTimer *pPerf = nullptr)
+ inline CFollowTrackT(const VehicleType *v = nullptr, RailTypes railtype_override = INVALID_RAILTYPES)
{
- Init(v, railtype_override, pPerf);
+ Init(v, railtype_override);
}
- inline CFollowTrackT(Owner o, RailTypes railtype_override = INVALID_RAILTYPES, CPerformanceTimer *pPerf = nullptr)
+ inline CFollowTrackT(Owner o, RailTypes railtype_override = INVALID_RAILTYPES)
{
assert(IsRailTT());
m_veh = nullptr;
- Init(o, railtype_override, pPerf);
+ Init(o, railtype_override);
}
- inline void Init(const VehicleType *v, RailTypes railtype_override, CPerformanceTimer *pPerf)
+ inline void Init(const VehicleType *v, RailTypes railtype_override)
{
assert(!IsRailTT() || (v != nullptr && v->type == VEH_TRAIN));
m_veh = v;
- Init(v != nullptr ? v->owner : INVALID_OWNER, IsRailTT() && railtype_override == INVALID_RAILTYPES ? Train::From(v)->compatible_railtypes : railtype_override, pPerf);
+ Init(v != nullptr ? v->owner : INVALID_OWNER, IsRailTT() && railtype_override == INVALID_RAILTYPES ? Train::From(v)->compatible_railtypes : railtype_override);
}
- inline void Init(Owner o, RailTypes railtype_override, CPerformanceTimer *pPerf)
+ inline void Init(Owner o, RailTypes railtype_override)
{
assert(!IsRoadTT() || m_veh != nullptr);
assert(!IsRailTT() || railtype_override != INVALID_RAILTYPES);
m_veh_owner = o;
- m_pPerf = pPerf;
/* don't worry, all is inlined so compiler should remove unnecessary initializations */
m_old_tile = INVALID_TILE;
m_old_td = INVALID_TRACKDIR;
@@ -237,7 +234,6 @@ protected:
/** stores track status (available trackdirs) for the new tile into m_new_td_bits */
inline bool QueryNewTileTrackStatus()
{
- CPerfStart perf(*m_pPerf);
if (IsRailTT() && IsPlainRailTile(m_new_tile)) {
m_new_td_bits = (TrackdirBits)(GetTrackBits(m_new_tile) * 0x101);
} else if (IsRoadTT()) {
diff --git a/src/pathfinder/npf/npf.cpp b/src/pathfinder/npf/npf.cpp
index 315b43b0e..009452161 100644
--- a/src/pathfinder/npf/npf.cpp
+++ b/src/pathfinder/npf/npf.cpp
@@ -8,6 +8,7 @@
/** @file npf.cpp Implementation of the NPF pathfinder. */
#include "../../stdafx.h"
+#include "../../debug.h"
#include "../../network/network.h"
#include "../../viewport_func.h"
#include "../../ship.h"
diff --git a/src/pathfinder/pf_performance_timer.hpp b/src/pathfinder/pf_performance_timer.hpp
deleted file mode 100644
index 66ec9695f..000000000
--- a/src/pathfinder/pf_performance_timer.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * This file is part of OpenTTD.
- * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
- * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/** @file pf_performance_timer.hpp Performance timer for pathfinders. */
-
-#ifndef PF_PERFORMANCE_TIMER_HPP
-#define PF_PERFORMANCE_TIMER_HPP
-
-#include "../debug.h"
-
-struct CPerformanceTimer
-{
- int64 m_start;
- int64 m_acc;
-
- CPerformanceTimer() : m_start(0), m_acc(0) {}
-
- inline void Start()
- {
- m_start = QueryTime();
- }
-
- inline void Stop()
- {
- m_acc += QueryTime() - m_start;
- }
-
- inline int Get(int64 coef)
- {
- return (int)(m_acc * coef / QueryFrequency());
- }
-
- inline int64 QueryTime()
- {
- return ottd_rdtsc();
- }
-
- inline int64 QueryFrequency()
- {
- return ((int64)2200 * 1000000);
- }
-};
-
-struct CPerfStartReal
-{
- CPerformanceTimer *m_pperf;
-
- inline CPerfStartReal(CPerformanceTimer& perf) : m_pperf(&perf)
- {
- if (m_pperf != nullptr) m_pperf->Start();
- }
-
- inline ~CPerfStartReal()
- {
- Stop();
- }
-
- inline void Stop()
- {
- if (m_pperf != nullptr) {
- m_pperf->Stop();
- m_pperf = nullptr;
- }
- }
-};
-
-struct CPerfStartFake
-{
- inline CPerfStartFake(CPerformanceTimer& perf) {}
- inline ~CPerfStartFake() {}
- inline void Stop() {}
-};
-
-typedef CPerfStartFake CPerfStart;
-
-#endif /* PF_PERFORMANCE_TIMER_HPP */
diff --git a/src/pathfinder/yapf/yapf.hpp b/src/pathfinder/yapf/yapf.hpp
index 097aaf0f3..36df4db95 100644
--- a/src/pathfinder/yapf/yapf.hpp
+++ b/src/pathfinder/yapf/yapf.hpp
@@ -12,7 +12,6 @@
#include "../../landscape.h"
#include "../pathfinder_func.h"
-#include "../pf_performance_timer.hpp"
#include "yapf.h"
#include "../../misc/fixedsizearray.hpp"
diff --git a/src/pathfinder/yapf/yapf_base.hpp b/src/pathfinder/yapf/yapf_base.hpp
index c04fa2af9..b34e40a67 100644
--- a/src/pathfinder/yapf/yapf_base.hpp
+++ b/src/pathfinder/yapf/yapf_base.hpp
@@ -13,8 +13,6 @@
#include "../../debug.h"
#include "../../settings_type.h"
-extern int _total_pf_time_us;
-
/**
* CYapfBaseT - A-star type path finder base class.
* Derive your own pathfinder from it. You must provide the following template argument:
@@ -68,12 +66,6 @@ protected:
int m_stats_cache_hits; ///< stats - how many node's costs were reused from cache
public:
- CPerformanceTimer m_perf_cost; ///< stats - total CPU time of this run
- CPerformanceTimer m_perf_slope_cost; ///< stats - slope calculation CPU time
- CPerformanceTimer m_perf_ts_cost; ///< stats - GetTrackStatus() CPU time
- CPerformanceTimer m_perf_other_cost; ///< stats - other CPU time
-
-public:
int m_num_steps; ///< this is there for debugging purposes (hope it doesn't hurt)
public:
@@ -120,9 +112,6 @@ public:
{
m_veh = v;
- CPerformanceTimer perf;
- perf.Start();
-
Yapf().PfSetStartupNodes();
bool bDestFound = true;
@@ -150,25 +139,18 @@ public:
bDestFound &= (m_pBestDestNode != nullptr);
- perf.Stop();
- if (_debug_yapf_level >= 2) {
- int t = perf.Get(1000000);
- _total_pf_time_us += t;
-
- if (_debug_yapf_level >= 3) {
- UnitID veh_idx = (m_veh != nullptr) ? m_veh->unitnumber : 0;
- char ttc = Yapf().TransportTypeChar();
- float cache_hit_ratio = (m_stats_cache_hits == 0) ? 0.0f : ((float)m_stats_cache_hits / (float)(m_stats_cache_hits + m_stats_cost_calcs) * 100.0f);
- int cost = bDestFound ? m_pBestDestNode->m_cost : -1;
- int dist = bDestFound ? m_pBestDestNode->m_estimate - m_pBestDestNode->m_cost : -1;
-
- DEBUG(yapf, 3, "[YAPF%c]%c%4d- %d us - %d rounds - %d open - %d closed - CHR %4.1f%% - C %d D %d - c%d(sc%d, ts%d, o%d) -- ",
- ttc, bDestFound ? '-' : '!', veh_idx, t, m_num_steps, m_nodes.OpenCount(), m_nodes.ClosedCount(),
- cache_hit_ratio, cost, dist, m_perf_cost.Get(1000000), m_perf_slope_cost.Get(1000000),
- m_perf_ts_cost.Get(1000000), m_perf_other_cost.Get(1000000)
- );
- }
+ if (_debug_yapf_level >= 3) {
+ UnitID veh_idx = (m_veh != nullptr) ? m_veh->unitnumber : 0;
+ char ttc = Yapf().TransportTypeChar();
+ float cache_hit_ratio = (m_stats_cache_hits == 0) ? 0.0f : ((float)m_stats_cache_hits / (float)(m_stats_cache_hits + m_stats_cost_calcs) * 100.0f);
+ int cost = bDestFound ? m_pBestDestNode->m_cost : -1;
+ int dist = bDestFound ? m_pBestDestNode->m_estimate - m_pBestDestNode->m_cost : -1;
+
+ DEBUG(yapf, 3, "[YAPF%c]%c%4d- %d rounds - %d open - %d closed - CHR %4.1f%% - C %d D %d",
+ ttc, bDestFound ? '-' : '!', veh_idx, m_num_steps, m_nodes.OpenCount(), m_nodes.ClosedCount(), cache_hit_ratio, cost, dist
+ );
}
+
return bDestFound;
}
diff --git a/src/pathfinder/yapf/yapf_costcache.hpp b/src/pathfinder/yapf/yapf_costcache.hpp
index c56c47b5f..1b4d52cff 100644
--- a/src/pathfinder/yapf/yapf_costcache.hpp
+++ b/src/pathfinder/yapf/yapf_costcache.hpp
@@ -182,16 +182,8 @@ protected:
inline static Cache& stGetGlobalCache()
{
static int last_rail_change_counter = 0;
- static Date last_date = 0;
static Cache C;
- /* some statistics */
- if (last_date != _date) {
- last_date = _date;
- DEBUG(yapf, 2, "Pf time today: %5d ms", _total_pf_time_us / 1000);
- _total_pf_time_us = 0;
- }
-
/* delete the cache sometimes... */
if (last_rail_change_counter != Cache::s_rail_change_counter) {
last_rail_change_counter = Cache::s_rail_change_counter;
diff --git a/src/pathfinder/yapf/yapf_costrail.hpp b/src/pathfinder/yapf/yapf_costrail.hpp
index 6bed27cba..b50300b61 100644
--- a/src/pathfinder/yapf/yapf_costrail.hpp
+++ b/src/pathfinder/yapf/yapf_costrail.hpp
@@ -86,7 +86,6 @@ protected:
public:
inline int SlopeCost(TileIndex tile, Trackdir td)
{
- CPerfStart perf_cost(Yapf().m_perf_slope_cost);
if (!stSlopeCost(tile, td)) return 0;
return Yapf().PfGetSettings().rail_slope_penalty;
}
@@ -172,7 +171,6 @@ public:
{
int cost = 0;
/* if there is one-way signal in the opposite direction, then it is not our way */
- CPerfStart perf_cost(Yapf().m_perf_other_cost);
if (IsTileType(tile, MP_RAILWAY)) {
bool has_signal_against = HasSignalOnTrackdir(tile, ReverseTrackdir(trackdir));
bool has_signal_along = HasSignalOnTrackdir(tile, trackdir);
@@ -275,8 +273,6 @@ public:
assert(tf->m_new_tile == n.m_key.m_tile);
assert((HasTrackdir(tf->m_new_td_bits, n.m_key.m_td)));
- CPerfStart perf_cost(Yapf().m_perf_cost);
-
/* Does the node have some parent node? */
bool has_parent = (n.m_parent != nullptr);
@@ -326,7 +322,7 @@ public:
EndSegmentReasonBits end_segment_reason = ESRB_NONE;
- TrackFollower tf_local(v, Yapf().GetCompatibleRailTypes(), &Yapf().m_perf_ts_cost);
+ TrackFollower tf_local(v, Yapf().GetCompatibleRailTypes());
if (!has_parent) {
/* We will jump to the middle of the cost calculator assuming that segment cache is not used. */
@@ -484,7 +480,7 @@ no_entry_cost: // jump here at the beginning if the node has no parent (it is th
/* Move to the next tile/trackdir. */
tf = &tf_local;
- tf_local.Init(v, Yapf().GetCompatibleRailTypes(), &Yapf().m_perf_ts_cost);
+ tf_local.Init(v, Yapf().GetCompatibleRailTypes());
if (!tf_local.Follow(cur.tile, cur.td)) {
assert(tf_local.m_err != TrackFollower::EC_NONE);
diff --git a/src/pathfinder/yapf/yapf_rail.cpp b/src/pathfinder/yapf/yapf_rail.cpp
index 3b6686f20..41aa5fdbd 100644
--- a/src/pathfinder/yapf/yapf_rail.cpp
+++ b/src/pathfinder/yapf/yapf_rail.cpp
@@ -34,8 +34,6 @@ template <typename Tpf> void DumpState(Tpf &pf1, Tpf &pf2)
fclose(f2);
}
-int _total_pf_time_us = 0;
-
template <class Types>
class CYapfReserveTrack
{