SwiftCollections is a high-performance, memory-efficient library of collections designed for game development, simulations, and other performance-critical applications.
- Optimized for Performance: Designed for low time complexity and minimal memory allocations.
- Versatile Use Cases: Suitable for data structures in 3D environments and complex spatial queries.
- Unity-Compatible: Fully functional within Unity's ecosystem.
- Customizable: Use pre-built implementations or extend functionality with custom interfaces.
- Requires FixedMathSharp.
Clone the repository and add it to your project:
-
Install via NuGet:
-
Add SwiftCollections to your project using the following command:
dotnet add package SwiftCollections
-
-
Or Download/Clone:
-
Clone the repository or download the source code.
git clone https://github.com/mrdav30/SwiftCollections.git
-
-
Add to Project:
- Include the
SwiftCollections
project or its DLLs in your build process.
- Include the
SwiftCollections is now maintained as a separate Unity package. For Unity-specific implementations, refer to:
π SwiftCollection-Unity Repository.
SwiftCollections depends on the following library:
This dependency is automatically included when installing.
- SwiftDictionary: A high-performance dictionary optimized for O(1) operations and minimal memory usage.
- SwiftBiDictionary: A bidirectional dictionary for efficient forward and reverse lookups in O(1).
- SwiftHashSet: An optimized set for unique values with fast operations.
- SwiftBucket: High-performance collection for O(1) addition and removal with stable indexing.
- SwiftQueue: Circular-buffer-based queue for ultra-low-latency operations.
- SwiftList: A dynamic list optimized for speed-critical applications.
- SwiftSortedList: Dynamically sorted collection with O(log n) operations.
- SwiftStack: Fast array-based stack with O(1) operations.
- SwiftArray2D / SwiftArray3D: Efficient, flat-mapped arrays for 2D and 3D data.
- SwiftBVH: A Bounding Volume Hierarchy optimized for spatial queries.
- SwiftObjectPool: Thread-safe generic object pooling for improved memory usage and performance.
- SwiftArrayPool: Array-specific pool for efficient reuse of arrays.
- SwiftCollectionPool: Pool for reusable collection instances (e.g., List, HashSet).
- SwiftBVH: Bounding Volume Hierarchy for efficient spatial queries.
- ObservableArray / ObservableSwiftList / ObservableDictionary: Reactive, observable collections with property and collection change notifications.
var bvh = new SwiftBVH<int>(100);
var volume = new BoundingVolume(new Vector3(0, 0, 0), new Vector3(1, 1, 1));
bvh.Insert(1, volume);
var results = new List<int>();
bvh.Query(new BoundingVolume(new Vector3(0, 0, 0), new Vector3(2, 2, 2)), results);
Console.WriteLine(results.Count); // Output: 1
var array2D = new Array2D<int>(10, 10);
array2D[3, 4] = 42;
Console.WriteLine(array2D[3, 4]); // Output: 42
var queue = new SwiftQueue<int>(10);
queue.Enqueue(5);
Console.WriteLine(queue.Dequeue()); // Output: 5
var array = new int[10].Populate(() => new Random().Next(1, 100));
SwiftCollections includes a comprehensive suite of xUnit tests for validation.
To execute all unit tests, use the following command:
dotnet test -c debug
The library includes benchmarks to measure the performance of its collections. Benchmarks are powered by BenchmarkDotNet and can be run as follows:
-
Open the SwiftCollections.Benchmarks project.
-
Modify the Program.cs file to select the desired benchmark. Uncomment the relevant BenchmarkRunner lines.
- Example Program.cs setup:
using BenchmarkDotNet.Running;
namespace SwiftCollections.Benchmarks
{
class Program
{
static void Main(string[] args)
{
// Uncomment the benchmark you want to run:
// var ListIntegerBenchmarksSummary = BenchmarkRunner.Run<ListIntegerBenchmarks>();
var StackIntegerBenchmarksSummary = BenchmarkRunner.Run<StackIntegerBenchmarks>();
// var DictionaryStringBenchmarksSummary = BenchmarkRunner.Run<DictionaryStringBenchmarks>();
}
}
}
- Build and run the project. The results will be displayed in the console and saved to a results file for further analysis.
- .NET Framework 4.7.2+
- Unity 2020+ (via - SwiftCollection-Unity.)
- Cross-Platform Support (Windows, Linux, macOS)
- Query Collections Precision: Supports both System.Numerics and FixedMathSharp.
This project is licensed under the MIT License - see the LICENSE
file
for details.
- mrdav30 - Lead Developer
- Contributions are welcome! Feel free to submit pull requests or report issues.
For questions or support, reach out to mrdav30 via GitHub or open an issue in the repository.