This repository provides a collection of high-performance utilities designed to address common programming needs while maintaining low GC pressure and maximizing performance.
- Utf8Formatter
- A low level implementation for maximum performance.
- Number primitives incl. short ushort int uint long ulong float double and culture specifics
- Hexadecimal formatting
- Data size formatting eg. 1024 => 1 KiB.
- DateTimes full format string support and culture specifics
- TimeSpans full format string support and culture specifics
StrBuilder
:- a lightweight string builder allowing use of stackalloc for temporary strings to prevent GC-Pressure.
- Faster File System Enumeration with prefetching metadata
- Standard-like Strings:
StdWString
(UTF-16)StdString
(UTF-8)
- Standard-like Containers:
List
(UnsafeList)Map
(UnsafeDictionary)Set
(UnsafeHashSet)Queue
(UnsafeQueue)Stack
(UnsafeStack)
- Custom Allocation Callbacks: Define your own memory allocation strategies.
- Pointer Wrapper Types: Utilize with generics for safer and more efficient pointer operations.
- Utility Functions:
- Memory allocation, freeing, copying, and moving
- String operations
- Memory setting (e.g.,
Memset
) - Sorting (e.g.,
QSort
)
- Thread-Safe Pools:
- Object pools
- List pools
To get started with the HexaEngine Utilities library, follow these steps:
-
Install the NuGet package:
dotnet add package Hexa.NET.Utilities
-
Include the library in your project:
using Hexa.NET.Utilities;
-
Initialize and utilize data structures:
var myString = new StdString("Hello, HexaEngine!"); var myList = new UnsafeList<int> { 1, 2 };
-
Leverage memory management utilities:
int* memory = Utils.AllocT<int>(1); Utils.Free(memory);
or
global using static Hexa.NET.Utilities.Utils; int* memory = AllocT<int>(1); Free(memory);
-
Use thread-safe components for concurrent operations:
var pool = new ObjectPool<MyObject>(); var obj = pool.Rent(); pool.Return(obj);
Contributions are welcome! If you have ideas for new features or improvements, feel free to submit a pull request or open an issue.
This project is licensed under the MIT License. See the LICENSE file for more details.