public void CopyTo(ref VarLenType dst) { var fulllength = length * sizeof(int); Buffer.MemoryCopy(Unsafe.AsPointer(ref this), Unsafe.AsPointer(ref dst), fulllength, fulllength); }
static unsafe void Sample1() { FasterKV <VarLenType, VarLenType, int[], int[], Empty, VarLenFunctions> fht; IDevice log; log = Devices.CreateLogDevice("hlog.log", deleteOnClose: true); fht = new FasterKV <VarLenType, VarLenType, int[], int[], Empty, VarLenFunctions> (128, new VarLenFunctions(), new LogSettings { LogDevice = log, MemorySizeBits = 17, PageSizeBits = 12 }, null, null, new VarLenTypeComparer(), new VariableLengthStructSettings <VarLenType, VarLenType> { keyLength = new VarLenLength(), valueLength = new VarLenLength() } ); fht.StartSession(); int[] input = default(int[]); Random r = new Random(100); for (int i = 0; i < 5000; i++) { if (i == 2968) { } var keylen = 2 + r.Next(10); int * keyval = stackalloc int[keylen]; ref VarLenType key1 = ref *(VarLenType *)keyval; key1.length = keylen; for (int j = 1; j < keylen; j++) { *(keyval + j) = i; } var len = 2 + r.Next(10); int * val = stackalloc int[len]; ref VarLenType value = ref *(VarLenType *)val;