namespace Xor;public static class Xor{ public static int[] Decode(int[] encoded, int first) { var arr = new int[encoded.Length + 1]; arr[0] = first; for (int i = 1; i < arr.Length; i++) { first = arr[i] = encoded[i - 1] ^ first; } return arr; } public static int[] DecodeWithSpans(int[] encoded, int first) { var arr = new int[encoded.Length + 1]; arr[0] = first; var encodedSpan = encoded.AsSpan(); var arrSpan = arr.AsSpan(1); for (int i = 0; i < arrSpan.Length; i++) { first = arrSpan[i] = encodedSpan[i] ^ first; } return arr; }}
| Method | N | Mean | Error | StdDev ||---------------- |------ |-----------:|---------:|---------:|| Decode | 1000 | 859.4 ns | 1.70 ns | 1.59 ns || DecodeWithSpans | 1000 | 843.9 ns | 2.06 ns | 1.72 ns || Decode | 10000 | 8,013.4 ns | 31.75 ns | 26.52 ns || DecodeWithSpans | 10000 | 7,857.6 ns | 13.34 ns | 10.41 ns |
public class Solution { public int[] Decode(int[] encoded, int first) { var arr = new int[encoded.Length + 1]; arr[0] = first; for (int i = 1; i < arr.Length; i++) { first = arr[i] = encoded[i-1] ^ first; } return arr; }}
System.Buffer.BlockCopy