Commit graph

6 commits

Author SHA1 Message Date
Aikar
bf7742bf96 Use BigDecimal to improve accracy of TPS results - long live 20 TPS!
It's always been commonly said to 'ignore' that TPS was '19.X', that
it was fine.

I suspect that the inaccuracy of floating point math resulted in us
losing precision over time, making it difficult to actually get back to 20,
as you know the fun 0.1 + 0.1 ... 9 more times != 1 problem.

BigDecimal supports working with doubles with higher precision.

This change makes it so our RollingAverage class maintains all of the data
using BigDecimal and using BigDecimal arithematic operations.

This ensures we have extremely high precision, enabling us to
actually be able print '20 TPS' when TPS is perfect.
2018-09-17 22:32:37 -04:00
Aikar
bd4927d174 more improvements to expiring map stuff 2018-09-16 03:21:52 -04:00
Aikar
a6792af72a prevent crashes on expiring map desync, dont spam logs 2018-09-16 02:57:22 -04:00
Aikar
c041a06904 Override some more methods in ExpiringMap to ensure fix
Seen some warnings of leak still being detected.

I'm not sure what's missing, so I'm adding nearly everything.
2018-09-16 01:04:40 -04:00
Aikar
ac9a6783a3 fix bug in last bug fix, recursion! 2018-09-16 00:26:32 -04:00
Aikar
e5986b1576 Fix major memory leaks in ExpiringMap
computeIfAbsent would leak as the entry
was never registered into the ttl map

This fixes that ,as well as redesigns cleaning to
not run on every manipulation, and instead to run clean
once per tick per expiring map.
2018-09-16 00:01:48 -04:00