Ejemplo n.º 1
0
        /// <summary>
        /// Try to appropreate
        /// </summary>
        public MemoryComparator()
        {
            IsDisposed = false;
#if NET_SIMD
            if (Avx2.IsSupported)
            {
                _compareMemory = CompareMemoryAvx2;
            }
            else if (Sse2.IsSupported)
            {
                _compareMemory = CompareMemorySse2;
            }
#else
            var mh = CreateAppropreateCompareMemoryMethodHandle();
            if (mh != null)
            {
                _compareMemoryMethodHandle = mh;
                _compareMemory             = mh.Method;
            }
#endif  // NET_SIMD
            else if (Environment.Is64BitProcess)
            {
                _compareMemory = CompareMemoryNaiveX64;
            }
            else
            {
                _compareMemory = CompareMemoryNaiveX86;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Release resources.
        /// </summary>
        /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources;
        /// <c>false</c> to release only unmanaged resources.</param>
        protected virtual void Dispose(bool disposing)
        {
            if (IsDisposed)
            {
                return;
            }
            if (disposing)
            {
                _compareMemory = null;
#if !NET_SIMD
                if (_compareMemoryMethodHandle != null)
                {
                    _compareMemoryMethodHandle.Dispose();
                    _compareMemoryMethodHandle = null;
                }
#endif  // !NET_SIMD
            }
            IsDisposed = true;
        }