/ArtNetDotNet

A performance focused .NET ArtNet library

Primary LanguageC#

ArtNetDotNet

A performance focused .NET ArtNet library

This was mostly written as a test to play with structs in .NET but turned out to be kind of useful where you need to quickly and easily generate Art-Net packets. There are methods to convert to byte array via Marshal and BinaryWriter. See benchmarks below.

BenchmarkDotNet=v0.11.5, OS=Windows 10.0.17134.829 (1803/April2018Update/Redstone4)
Intel Core i7-4790K CPU 4.00GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=2.1.104
  [Host]     : .NET Core 2.0.6 (CoreCLR 4.6.26212.01, CoreFX 4.6.26212.01), 64bit RyuJIT
  Job-PLJXNI : .NET Core 2.0.6 (CoreCLR 4.6.26212.01, CoreFX 4.6.26212.01), 64bit RyuJIT

InvocationCount=100000  UnrollFactor=1  
Method Mean Error StdDev
GetBytesUsingMarshal 608.9 ns 13.050 ns 37.44 ns
GetBytesUsingBinaryWriter 325.4 ns 8.082 ns 23.19 ns

A "real world" test using a UDP socket and The ArtNetominator generated about 600Mbps of traffic and ~90k ArtNet packets/s on my system.