IEnumerableUnpacker 1.0.2
See the version list below for details.
dotnet add package IEnumerableUnpacker --version 1.0.2
NuGet\Install-Package IEnumerableUnpacker -Version 1.0.2
<PackageReference Include="IEnumerableUnpacker" Version="1.0.2" />
paket add IEnumerableUnpacker --version 1.0.2
#r "nuget: IEnumerableUnpacker, 1.0.2"
// Install IEnumerableUnpacker as a Cake Addin #addin nuget:?package=IEnumerableUnpacker&version=1.0.2 // Install IEnumerableUnpacker as a Cake Tool #tool nuget:?package=IEnumerableUnpacker&version=1.0.2
IEnumerableUnpacker 📦
IEnumerableUnpacker is a C# library that provides a quick and efficient way to unpack IEnumerable<T>
to 1D and 2D arrays of T's members. It leverages parallel processing and optimized memory copying techniques to achieve high-performance array unpacking. 🚀
Key Features
- Unpack
IEnumerable<T>
to 1D and 2D arrays of T's members - Utilize parallel processing for individual members âš¡
- Identify blittable types and use unaligned memory copy for optimized performance
- Support for generic types
- Flexible attribute-based configuration for specifying output parameter names
Installation
You can install IEnumerableUnpacker via NuGet Package Manager:
Install-Package IEnumerableUnpacker
Usage
Here's an example of how to use IEnumerableUnpacker:
[Unpackable]
public class UnpackMe<Titem, Titem2, UselessGeneric>
{
[Unpack("MyItegersOut")]
public int[] myIntegers;
[Unpack("MyIntegerOut")]
public int myInteger;
[Unpack("MyFloatsOut")]
public float[] myFloats;
[Unpack("MyGenericOut")]
public Titem[] myGeneric;
[Unpack("MyGeneric2Out")]
public Titem2 myGeneric2;
}
public static unsafe void UnpackUnpackMe<Titem, Titem2, UselessGeneric>(this IEnumerable<UnpackMe<Titem, Titem2, UselessGeneric>> source, out int[,] MyItegersOut, out int[] MyIntegerOut, out float[,] MyFloatsOut, out Titem[,] MyGenericOut, out Titem2[] MyGeneric2Out)
{
// Unpacking logic...
}
In this example:
- The
Unpackable
attribute is used to mark the class for unpacking. - The
Unpack
attribute is used to specify the output parameter names for the unpacked arrays. - Generic types are supported and can be used as needed.
- Parameters not labeled with the
Unpack
attribute will not be unpacked.
For more detailed benchmarks and comparisons, please visit the project repository. 📊
Contributing
Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on the GitHub repository. 😊
License
ArrayUnpacker is licensed under the MIT License.
Note
I've decided to use 2D arrays because that's what I use with TorchSharp. Unpacking to flat types might be faster, so feel free to reach out to me if it's required! 📫
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp (>= 4.9.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on IEnumerableUnpacker:
Package | Downloads |
---|---|
RLMatrix
Deep Reinforcement Learning in .NET |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on IEnumerableUnpacker:
Repository | Stars |
---|---|
asieradzk/RL_Matrix
Deep Reinforcement Learning in C#
|