小编Yur*_*kii的帖子

C# 性能 - 热循环中指向 span 的指针

我正在寻找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)

c# performance loops slice bitconverter

2
推荐指数
1
解决办法
456
查看次数

标签 统计

bitconverter ×1

c# ×1

loops ×1

performance ×1

slice ×1