There a few performance tweaks that could really help reduce heap allocations / GC pressure during SqlBulkCopy on SqlDecimal:
During SqlDecimal's construction, an int[] is created:
int[] bits = decimal.GetBits(value);
It would be great if decimal could expose a GetBitsSpan so this could be stack allocated.
During multiple operations invoked by various operations, uint[] is created instead of stackalloc'ed
ex:
uint[] rguiData = new uint[4] { _data1, _data2, _data3, _data4 };
I'm happy to create a fork/PR to help get this in.