| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | using System;using System.Diagnostics;using System.Globalization;using Microsoft.Extensions.Logging;namespace MediaBrowser.Controller.Library{    /// <summary>    /// Class Profiler.    /// </summary>    public class Profiler : IDisposable    {        /// <summary>        /// The name.        /// </summary>        readonly string _name;        /// <summary>        /// The stopwatch.        /// </summary>        readonly Stopwatch _stopwatch;        /// <summary>        /// The _logger.        /// </summary>        private readonly ILogger<Profiler> _logger;        /// <summary>        /// Initializes a new instance of the <see cref="Profiler" /> class.        /// </summary>        /// <param name="name">The name.</param>        /// <param name="logger">The logger.</param>        public Profiler(string name, ILogger<Profiler> logger)        {            this._name = name;            _logger = logger;            _stopwatch = new Stopwatch();            _stopwatch.Start();        }        /// <summary>        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.        /// </summary>        public void Dispose()        {            Dispose(true);            GC.SuppressFinalize(this);        }        /// <summary>        /// Releases unmanaged and - optionally - managed resources.        /// </summary>        /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>        protected virtual void Dispose(bool dispose)        {            if (dispose)            {                _stopwatch.Stop();                string message;                if (_stopwatch.ElapsedMilliseconds > 300000)                {                    message = string.Format(                        CultureInfo.InvariantCulture,                        "{0} took {1} minutes.",                        _name,                        ((float)_stopwatch.ElapsedMilliseconds / 60000).ToString("F", CultureInfo.InvariantCulture));                }                else                {                    message = string.Format(                        CultureInfo.InvariantCulture,                        "{0} took {1} seconds.",                        _name,                        ((float)_stopwatch.ElapsedMilliseconds / 1000).ToString("#0.000", CultureInfo.InvariantCulture));                }                _logger.LogInformation(message);            }        }    }}
 |