WrappedDataWatcher#hasIndex too slow because of try/catch
MeGysssTaa opened this issue ยท 2 comments
Describe the bug
The current implementation of WrappedDataWatcher#hasIndex
makes use of method public Object getObject(WrappedDataWatcher.WrappedDataWatcherObject object)
. In order for this method to return null
, or, in other words, in order for hasIndex
to return false
, a NullPointerException
or an InvocationTargetException
must be thrown and handled:
(see screenshot 1)
This solution is slow in scenarios where hasIndex
is called very often (for example, when using a custom data watcher to create cross-compatible packet NPCs):
(see screenshot 2)
To Reproduce
Steps to reproduce the behavior:
- Use method
hasIndex
ofWrappedDataWatcher
often enough, e.g. in a custom data watcher for cross-compatible packet NPCs. - Create a Java Flight Recording.
- Enjoy a ton of
NullPointerException
s and even moreInvocationTargetException
s in the exceptions tab.
Expected behavior
I would really appreciate it if this method was faster and avoided use of any try/catch
statements and exception handlers, so that it may be called very frequently without negative performance consequences.
Version Info
https://pastebin.com/7bi3qARm
Additional context
High load.
@MeGysssTaa I appreciate the thoroughness. Give the latest dev build a try and let me know if it helps