小编Tor*_*oof的帖子

不安全.从字节数组到ulong数组

我目前正在考虑移植我的metro哈希实现以使用C#7功能,因为有些部分可能会从ref本地人那里获益以提高性能.哈希在ulong[4]数组上进行计算,但结果是16个byte数组.目前我正在将ulong数组复制到结果byte缓冲区,但这需要一些时间.所以我想知道在System.Runtime.CompilerServices.Unsafe这里使用是否安全:

var result = new byte[16];
ulong[] state = Unsafe.As<byte[], ulong[]>(ref result);
ref var firstState = ref state[0];
ref var secondState = ref state[1];
ulong thirdState = 0;
ulong fourthState = 0;
Run Code Online (Sandbox Code Playgroud)

上面的代码片段意味着我也使用结果缓冲区来进行状态计算的部分,而不仅仅是最终输出.

我的单元测试是成功的,并且根据benchmarkdotnet跳过块复制将导致20%的性能提升,这足以让我发现它是否正确使用它.

c# c#-7.0

15
推荐指数
1
解决办法
1105
查看次数

标签 统计

c# ×1

c#-7.0 ×1