summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2019-01-11 08:03:27 +0100
committer couriersud <couriersud@gmx.org>2019-01-11 08:03:27 +0100
commit7ababd6091fb0f17411d37b7d273a896fd051c49 (patch)
tree1b3eea0e42ce43959d15c0fc41a0eb6e1946d938
parent414d43cc16dbe5805d0b83798994112cbebce5cf (diff)
Move NL_KEEP_STATISTICS from netlist_types to the individual use cases.
(nw)
-rw-r--r--src/lib/netlist/netlist_types.h12
-rw-r--r--src/lib/netlist/nl_base.cpp20
-rw-r--r--src/lib/netlist/nl_base.h12
-rw-r--r--src/lib/netlist/nl_lists.h10
4 files changed, 26 insertions, 28 deletions
diff --git a/src/lib/netlist/netlist_types.h b/src/lib/netlist/netlist_types.h
index 0bd32be21be..d5fe7b11e20 100644
--- a/src/lib/netlist/netlist_types.h
+++ b/src/lib/netlist/netlist_types.h
@@ -22,13 +22,11 @@ namespace netlist
// Performance tracking
//============================================================
-#if NL_KEEP_STATISTICS
- using nperftime_t = plib::chrono::timer<plib::chrono::exact_ticks, true>;
- using nperfcount_t = plib::chrono::counter<true>;
-#else
- using nperftime_t = plib::chrono::timer<plib::chrono::exact_ticks, false>;
- using nperfcount_t = plib::chrono::counter<false>;
-#endif
+ template<bool enabled_>
+ using nperftime_t = plib::chrono::timer<plib::chrono::exact_ticks, enabled_>;
+
+ template<bool enabled_>
+ using nperfcount_t = plib::chrono::counter<enabled_>;
//============================================================
// Types needed by various includes
diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp
index 25128b4c2d9..f6f10acb4c5 100644
--- a/src/lib/netlist/nl_base.cpp
+++ b/src/lib/netlist/nl_base.cpp
@@ -147,7 +147,7 @@ const logic_family_desc_t *family_CD4XXX()
// ----------------------------------------------------------------------------------------
detail::queue_t::queue_t(netlist_t &nl)
- : timed_queue<pqentry_t<net_t *, netlist_time>, false>(512)
+ : timed_queue<pqentry_t<net_t *, netlist_time>, false, NL_KEEP_STATISTICS>(512)
, netlist_ref(nl)
, plib::state_manager_t::callback_t()
, m_qsize(0)
@@ -585,7 +585,7 @@ void netlist_t::process_queue(const netlist_time &delta) NL_NOEXCEPT
void netlist_t::print_stats() const
{
- if (nperftime_t::enabled)
+ if (nperftime_t<NL_KEEP_STATISTICS>::enabled)
{
std::vector<size_t> index;
for (size_t i=0; i<m_devices.size(); i++)
@@ -594,7 +594,7 @@ void netlist_t::print_stats() const
std::sort(index.begin(), index.end(),
[&](size_t i1, size_t i2) { return m_devices[i1]->m_stat_total_time.total() < m_devices[i2]->m_stat_total_time.total(); });
- nperftime_t::type total_time(0);
+ nperftime_t<NL_KEEP_STATISTICS>::type total_time(0);
uint_least64_t total_count(0);
for (auto & j : index)
@@ -607,8 +607,8 @@ void netlist_t::print_stats() const
total_count += entry->m_stat_total_time.count();
}
- nperftime_t overhead;
- nperftime_t test;
+ nperftime_t<NL_KEEP_STATISTICS> overhead;
+ nperftime_t<NL_KEEP_STATISTICS> test;
overhead.start();
for (int j=0; j<100000;j++)
{
@@ -617,9 +617,9 @@ void netlist_t::print_stats() const
}
overhead.stop();
- nperftime_t::type total_overhead = overhead()
- * static_cast<nperftime_t::type>(total_count)
- / static_cast<nperftime_t::type>(200000);
+ nperftime_t<NL_KEEP_STATISTICS>::type total_overhead = overhead()
+ * static_cast<nperftime_t<NL_KEEP_STATISTICS>::type>(total_count)
+ / static_cast<nperftime_t<NL_KEEP_STATISTICS>::type>(200000);
log().verbose("Queue Pushes {1:15}", queue().m_prof_call());
log().verbose("Queue Moves {1:15}", queue().m_prof_sortmove());
@@ -631,8 +631,8 @@ void netlist_t::print_stats() const
log().verbose("");
log().verbose("Take the next lines with a grain of salt. They depend on the measurement implementation.");
log().verbose("Total overhead {1:15}", total_overhead);
- nperftime_t::type overhead_per_pop = (m_stat_mainloop()-2*total_overhead - (total_time - total_overhead))
- / static_cast<nperftime_t::type>(queue().m_prof_call());
+ nperftime_t<NL_KEEP_STATISTICS>::type overhead_per_pop = (m_stat_mainloop()-2*total_overhead - (total_time - total_overhead))
+ / static_cast<nperftime_t<NL_KEEP_STATISTICS>::type>(queue().m_prof_call());
log().verbose("Overhead per pop {1:11}", overhead_per_pop );
log().verbose("");
for (auto &entry : m_devices)
diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h
index a29b070f3ce..4903807e15a 100644
--- a/src/lib/netlist/nl_base.h
+++ b/src/lib/netlist/nl_base.h
@@ -1097,9 +1097,9 @@ namespace netlist
void set_default_delegate(detail::core_terminal_t &term);
/* stats */
- nperftime_t m_stat_total_time;
- nperfcount_t m_stat_call_count;
- nperfcount_t m_stat_inc_active;
+ nperftime_t<NL_KEEP_STATISTICS> m_stat_total_time;
+ nperfcount_t<NL_KEEP_STATISTICS> m_stat_call_count;
+ nperfcount_t<NL_KEEP_STATISTICS> m_stat_inc_active;
protected:
@@ -1193,7 +1193,7 @@ namespace netlist
* solvers will update inputs after parallel processing.
*/
class detail::queue_t :
- public timed_queue<pqentry_t<net_t *, netlist_time>, false>,
+ public timed_queue<pqentry_t<net_t *, netlist_time>, false, NL_KEEP_STATISTICS>,
public detail::netlist_ref,
public plib::state_manager_t::callback_t
{
@@ -1351,8 +1351,8 @@ namespace netlist
plib::state_manager_t m_state;
// performance
- nperftime_t m_stat_mainloop;
- nperfcount_t m_perf_out_processed;
+ nperftime_t<NL_KEEP_STATISTICS> m_stat_mainloop;
+ nperfcount_t<NL_KEEP_STATISTICS> m_perf_out_processed;
std::vector<plib::owned_ptr<core_device_t>> m_devices;
};
diff --git a/src/lib/netlist/nl_lists.h b/src/lib/netlist/nl_lists.h
index 1eae38b25fb..9e8007e24cd 100644
--- a/src/lib/netlist/nl_lists.h
+++ b/src/lib/netlist/nl_lists.h
@@ -101,7 +101,7 @@ namespace netlist
#if !USE_HEAP
/* Use TS = true for a threadsafe queue */
- template <class T, bool TS, class QueueOp = typename T::QueueOp>
+ template <class T, bool TS, bool KEEPSTAT, class QueueOp = typename T::QueueOp>
class timed_queue : plib::nocopyassignmove
{
public:
@@ -201,8 +201,8 @@ namespace netlist
public:
// profiling
- nperfcount_t m_prof_sortmove;
- nperfcount_t m_prof_call;
+ nperfcount_t<KEEPSTAT> m_prof_sortmove;
+ nperfcount_t<KEEPSTAT> m_prof_call;
};
#else
template <class T, bool TS, class QueueOp = typename T::QueueOp>
@@ -296,8 +296,8 @@ namespace netlist
public:
// profiling
- nperfcount_t m_prof_sortmove;
- nperfcount_t m_prof_call;
+ nperfcount_t<NL_KEEP_STATISTICS> m_prof_sortmove;
+ nperfcount_t<NL_KEEP_STATISTICS> m_prof_call;
};
#endif
}