This extension is a library of commonly used functionality and extension methods in my plugins.
The extension does nothing on its own and has 0 cost to have it on your server
It also contains a custom UI framework that among many other things serializes UI to JSON significantly faster than the current Oxide CUI library and supports pooling of all UI components
Pooling works by hanging on to objects and reusing then and it does have pro's and con's.
The pro being that you don't have repeated memory allocations as objects are being recycled instead of created new every time. The con being that it is slower to grab a object from the pool over creating a new one plus the cost of returning it when you are done.
But as you can see from the following example there is a significant performance increase over the current serialization method used by Oxide that even with pooling enabled it is still many times faster
Any future plugins developed by myself will likely be using this extension, and a bunch of existing plugins currently being overhauled are also going to make use of this
Installation
To install the extension simply download this plugin, the plugin will download the extension for you
If the extension is not already loaded on your server the plugin will load it straight away
The extension self updates so you will not need to worry about staying up to date
Console Commands
chaos.checkupdate - Check if a update is available, however the extension will periodically check automatically
The extension does nothing on its own and has 0 cost to have it on your server
It also contains a custom UI framework that among many other things serializes UI to JSON significantly faster than the current Oxide CUI library and supports pooling of all UI components
Pooling works by hanging on to objects and reusing then and it does have pro's and con's.
The pro being that you don't have repeated memory allocations as objects are being recycled instead of created new every time. The con being that it is slower to grab a object from the pool over creating a new one plus the cost of returning it when you are done.
But as you can see from the following example there is a significant performance increase over the current serialization method used by Oxide that even with pooling enabled it is still many times faster
Code:
(Oxide) JsonConvert serialization of 315 containers and 635 UI components took 8.1509ms
ChaosUI serialization of 315 containers and 635 UI components took 0.6458ms
Pooling 315 containers and 635 UI components took 0.5448ms
(Oxide) JsonConvert serialization of 315 containers and 635 UI components took 8.1491ms
ChaosUI serialization of 315 containers and 635 UI components took 0.6079ms
Pooling 315 containers and 635 UI components took 0.7615ms
(Oxide) JsonConvert serialization of 315 containers and 635 UI components took 7.4499ms
ChaosUI serialization of 315 containers and 635 UI components took 0.5914ms
Pooling 315 containers and 635 UI components took 0.5137ms
(Oxide) JsonConvert serialization of 315 containers and 635 UI components took 8.1512ms
ChaosUI serialization of 315 containers and 635 UI components took 0.5789ms
Pooling 315 containers and 635 UI components took 0.6028ms
(Oxide) JsonConvert serialization of 315 containers and 635 UI components took 8.1569ms
ChaosUI serialization of 315 containers and 635 UI components took 0.5766ms
Pooling 315 containers and 635 UI components took 0.4925ms
Any future plugins developed by myself will likely be using this extension, and a bunch of existing plugins currently being overhauled are also going to make use of this
Installation
To install the extension simply download this plugin, the plugin will download the extension for you
If the extension is not already loaded on your server the plugin will load it straight away
The extension self updates so you will not need to worry about staying up to date
Console Commands
chaos.checkupdate - Check if a update is available, however the extension will periodically check automatically