From 1d7b27a877a3164857ba4aba56ef8a7fd4cd7af9 Mon Sep 17 00:00:00 2001 From: Nic Barker Date: Wed, 27 Nov 2024 11:30:36 +1300 Subject: [PATCH] Improve calc perf --- clay.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/clay.h b/clay.h index 778799e..9463220 100644 --- a/clay.h +++ b/clay.h @@ -1570,10 +1570,14 @@ Clay__MeasureTextCacheItem *Clay__MeasureTextCached(Clay_String *text, Clay_Text // This element hasn't been seen in a few frames, delete the hash map item if (Clay__generation - hashEntry->generation > 2) { // Add all the measured words that were included in this measurement to the freelist - for (int32_t i = 0; i < hashEntry->measuredWords.length; i++) { - uint32_t index = Clay__MeasuredWordArraySlice_Get(&hashEntry->measuredWords, i) - &Clay__measuredWords.internalArray[0]; - Clay__int32_tArray_Add(&Clay__measuredWordsFreeList, index); + if (hashEntry->measuredWords.length > 0) { + uint32_t startOffset = hashEntry->measuredWords.internalArray - Clay__measuredWords.internalArray; + + for (int32_t i = 0; i < hashEntry->measuredWords.length; i++) { + Clay__int32_tArray_Add(&Clay__measuredWordsFreeList, (int32_t)(startOffset + i)); + } } + uint32_t nextIndex = hashEntry->nextIndex; Clay__MeasureTextCacheItemArray_Set(&Clay__measureTextHashMapInternal, elementIndex, CLAY__INIT(Clay__MeasureTextCacheItem) {}); Clay__int32_tArray_Add(&Clay__measureTextHashMapInternalFreeList, elementIndex);