我正在寻找BitConverter的更快替代方案:
但!在“热循环”内部:
//i_k_size = 8 bytes
while (fs.Read(ba_buf, 0, ba_buf.Length) > 0 && dcm_buf_read_ctr < i_buf_reads)
{
Span<byte> sp_data = ba_buf.AsSpan();
for (int i = 0; i < ba_buf.Length; i += i_k_size)
{
UInt64 k = BitConverter.ToUInt64(sp_data.Slice(i, i_k_size));
}
}
Run Code Online (Sandbox Code Playgroud)
我将指针与转换集成的努力 - 使性能变得更糟。可以使用指针来使跨度更快吗?
以下是基准测试:指针 2 数组快 2 倍
实际上我希望使用这段代码而不是 BitConverter:
public static int l_1gb = 1073741824;
static unsafe void Main(string[] args)
{
Random rnd = new Random();
Stopwatch sw1 = new();
sw1.Start();
byte[] k = …Run Code Online (Sandbox Code Playgroud)