예제 #1
0
        public void MemoryAccessVecViaHelperUnsafe(RetainableMemory <int> rm)
        {
            long sum = 0;

            using (Benchmark.Run("HelperUnsafe", rm.Length))
            {
                object obj = rm;
                for (long i = 0; i < rm.Length; i++)
                {
                    sum += RetainableMemoryHelper.GetVecRef(obj).UnsafeGetUnaligned <int>((IntPtr)i);
                }
            }

            if (sum < 1000)
            {
                throw new InvalidOperationException();
            }
        }
예제 #2
0
        public void MemoryAccessVecViaDbHelperDangerous(RetainableMemory <int> rm)
        {
            long sum = 0;

            using (Benchmark.Run("DbHelperDangerous (^)", rm.Length))
            {
                DataBlockLike db = new DataBlockLike {
                    Rm = rm
                };
                for (int i = 0; i < rm.Length; i++)
                {
                    sum += RetainableMemoryHelper.GetVecRef(db.Rm).DangerousGetUnaligned <int>(i);
                }
            }

            if (sum < 1000)
            {
                throw new InvalidOperationException();
            }
        }