From c97ba6b928ba81ebd4c25a98ae90f642e76b8e9d Mon Sep 17 00:00:00 2001 From: whitequark Date: Thu, 17 Nov 2016 14:14:56 +0000 Subject: [PATCH] Optimize IdList::MaximumId() from O(n) to O(1). This specific implementation seems to have lingered from the days before IdList was stored sorted. This commit has resulted in a ~5% improvement in Generate::DIRTY time for modelisation.slvs on a GCC 6 release build. --- src/dsc.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/dsc.h b/src/dsc.h index 1830234..f9ad12f 100644 --- a/src/dsc.h +++ b/src/dsc.h @@ -270,13 +270,11 @@ public: int elemsAllocated; uint32_t MaximumId() { - uint32_t id = 0; - - int i; - for(i = 0; i < n; i++) { - id = max(id, elem[i].h.v); + if(n == 0) { + return 0; + } else { + return elem[n - 1].h.v; } - return id; } H AddAndAssignId(T *t) {