예제 #1
0
        /// <summary>
        /// Clears the cache.
        /// </summary>
        public void Flush()
        {
            lock (_lockObj)
            {
                if (_cache != null)
                {
                    _cache.Dispose();
                    _ttls.Clear();
                }

                _cache = new System.Runtime.Caching.MemoryCache("stackredis.l1.objmemcache");
            }
        }
예제 #2
0
 /// <summary>
 /// Releases unmanaged and - optionally - managed 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 (disposing)
     {
         _cache.Dispose();
     }
 }
예제 #3
0
 public void Dispose()
 {
     if (mc != null)
     {
         mc.Dispose();
     }
 }
예제 #4
0
 public void Dispose()
 {
     _memoryCache.Dispose();
 }
 public override void ClearAll()
 {
     _cache.Dispose();
     _cache = System.Runtime.Caching.MemoryCache.Default;
 }
예제 #6
0
 public void Dispose()
 {
     _cache?.Dispose();
 }
        private static void MemorySizePerformance()
        {
            /*
             * Some numbers:
             * ---------------------------------------------------------------------------------------------------------
             * 10k objects
             * ---------------------------------------------------------------------------------------------------------
             * maxStringSize            repeatStringSize            serialized vs Raw            compression vs raw
             * 1                        1                            92.4%                        93.8%
             * 17                       1                            88.7%                        90.0%
             * 128                      1                            73.9%                        74.7%
             * 2                        2                            92.7%                        93.8%
             * 17                       2                            86.7%                        89.7%
             * 128                      2                            73.9%                        74.7%
             * 4                        4                            90.5%                        91.6%
             * 17                       4                            86.7%                        89.7%
             * 128                      4                            73.9%                        68.8%
             * 128                      128                          73.9%                        56.8%
             * 
             * 10,000                   10,000                       50.7%                         1.8%
             * 100,000                  100,000                      50.1%                         0.2%
             */

            const int MAX_STRING_SIZE = 10000;
            const int REPEAT_STRING_SIZE = 10;
            const int ITERATIONS = 1000;
            const string KEY = "impt-key";

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();

            long mCs = GC.GetTotalMemory(true);
            MemoryCache cM = new MemoryCache("cM");
            for (int i = 0; i < ITERATIONS; i++)
            {
                var m = new MultipleProperties
                    {
                        Id = GenerateId(),
                        Name = GenerateString(MAX_STRING_SIZE, REPEAT_STRING_SIZE)
                    };

                byte[] s = ProtoBufSerializer.Serialize(m);
                byte[] c = SmartCompressor.Instance.CompressAsync(s).Result;
                cM.Set(KEY + i.ToString(CultureInfo.InvariantCulture), c, null);
            }

            long mCe = GC.GetTotalMemory(true);
            long compressMemory = mCe - mCs;

            cM.Trim(100);
            cM.Dispose();
            // ReSharper disable once RedundantAssignment
            cM = null;

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();

            long mSs = GC.GetTotalMemory(true);
            MemoryCache sM = new MemoryCache("sM");
            for (int i = 0; i < ITERATIONS; i++)
            {
                var m = new MultipleProperties
                    {
                        Id = GenerateId(),
                        Name = GenerateString(MAX_STRING_SIZE, REPEAT_STRING_SIZE)
                    };

                byte[] s = ProtoBufSerializer.Serialize(m);
                sM.Set(KEY + i.ToString(CultureInfo.InvariantCulture), s, null);
            }

            long mSe = GC.GetTotalMemory(true);
            long serializeMemory = mSe - mSs;

            sM.Trim(100);
            sM.Dispose();
            // ReSharper disable once RedundantAssignment
            sM = null;

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();

            long mRs = GC.GetTotalMemory(true);
            MemoryCache rM = new MemoryCache("rM");
            for (int i = 0; i < ITERATIONS; i++)
            {
                var m = new MultipleProperties
                    {
                        Id = GenerateId(),
                        Name = GenerateString(MAX_STRING_SIZE, REPEAT_STRING_SIZE)
                    };
                rM.Set(KEY + i.ToString(CultureInfo.InvariantCulture), m, null);
            }

            long mRe = GC.GetTotalMemory(true);
            long rawMemory = mRe - mRs;

            rM.Trim(100);
            rM.Dispose();
            // ReSharper disable once RedundantAssignment
            rM = null;

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();

            Console.WriteLine("Memory Size:");
            Console.WriteLine("  Raw: {0:#,##0.#}KB", rawMemory / 1024.0);
            Console.WriteLine(
                "  Serialized: {0:#,##0.#}KB ({1:0.00}%)",
                serializeMemory / 1024.0,
                ((float)serializeMemory / rawMemory) * 100);
            Console.WriteLine(
                "  Serialized + Compressed: {0:#,##0.#}KB ({1:0.00}%)",
                compressMemory / 1024.0,
                ((float)compressMemory / rawMemory) * 100);
        }
예제 #8
0
 public override void Dispose() => _memoryCache.Dispose();
예제 #9
0
 /// <summary>
 /// Clear cache.
 /// </summary>
 public void Clear()
 {
     _cache.Dispose();
 }