Extension methods providing high performance deep copy capability for of arrays of common value types - currently: byte, char, short, int, long, and their unsigned brethren where applicable.
Considerably faster than Array.Copy - and it's also faster than Buffer.BlockCopy in most situations!
High-performance enabled through use of optimised 'unsafe' blocks.
This package could be a good addition to other packages if you're building in copying of some kind that would benefit from being fast.
See the version list below for details.
Install-Package PerfCopy -Version 1.2.0
dotnet add package PerfCopy --version 1.2.0
<PackageReference Include="PerfCopy" Version="1.2.0" />
paket add PerfCopy --version 1.2.0
Added additional methods to some types to harmonise them. Now all types have equivalent functionality.
Exposed a performance copying method, for those who might want to use it (running with scissors warning applies: method uses 'unsafe' techniques with pointer-arithmetic, so bad things can happen if one is careless. You have been duly warned!)
This package has no dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on PerfCopy:
High performance classic ring/circular buffer (with optional .NET BCL System.IO.Stream interface) for byte data. Packaged as a portable class library (PCL). Asynchronous I/O from streams is supported to boost performance. Supports concurrent reading and writing, and overwriting (optional).
A set of extension methods for doing bitwise manipulation such as endianness (bytes<-->integral types) and rotation. Endianness-related functionality: short, ushort, int, uint, long, ulong : conversion between (to and from) individual items of these and byte arrays, and between arrays of any of these (UInt32, for example) and byte arrays. Little and big-endian methods exist at feature and/or type parity. Rotation-related functionality: byte, short, ushort, int, uint, long, ulong : left and right bitwise circular rotation ("rotate no carry"). Please note: the rotation implemented here is NOT "rotate through carry"! As such, sign is NOT handled specially for signed types. Endianness conversions operating on multiple values (bulk operations) are performance-enhanced with optimised 'unsafe' implementations. They are considerably faster than comparable operations provided by the BCL.
This package is not used by any popular GitHub repositories.