//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Configuration { using System.Configuration.Internal; using System.Globalization; using System.Collections; using System.IO; using System.Xml; using System.Security; using System.Security.Permissions; using System.Threading; using System.Net; using Assembly = System.Reflection.Assembly; using StringBuilder = System.Text.StringBuilder; #if NOPERF internal class ClientConfigPerf { const int SIZE=100; long[] _counters; long[] _totals; string[] _names; int _current; bool _enabled; static internal ClientConfigPerf ConfigSystem = new ClientConfigPerf(false); static internal ClientConfigPerf ScanSections = new ClientConfigPerf(false); static internal ClientConfigPerf CopySection = new ClientConfigPerf(false); static internal ClientConfigPerf CopyXmlNode = new ClientConfigPerf(false); static internal ClientConfigPerf GetConfig = new ClientConfigPerf(true); ClientConfigPerf(bool enabled) { #if PERF _enabled = enabled; if (_enabled) { _counters = new long[SIZE]; _totals = new long[SIZE]; _names = new string[SIZE]; } #endif } internal void Reset() { #if PERF _current = 0; #endif } internal void Record(string name) { #if PERF if (_enabled && _current < _counters.Length) { _names[_current] = name; Microsoft.Win32.SafeNativeMethods.QueryPerformanceCounter(out _counters[_current]); if (_current > 0) { _totals[_current] += _counters[_current] - _counters[_current - 1]; } _current++; } #endif } void DoPrint() { #if PERF if (_enabled) { long lfreq = 0; Microsoft.Win32.SafeNativeMethods.QueryPerformanceFrequency(out lfreq); double freq = (double) lfreq; double grandtotal = 0; for (int i = 0; i < _current; i++) { double time = ((double)_totals[i]) / freq; grandtotal += time; Console.WriteLine("{0,-20} : {1:F6}", _names[i], time); } Console.WriteLine("{0,-20} : {1:F6}\n", "TOTAL", grandtotal); } #endif } public static void Print() { #if PERF ConfigSystem.DoPrint(); ScanSections.DoPrint(); CopySection.DoPrint(); CopyXmlNode.DoPrint(); GetConfig.DoPrint(); #endif } } #endif }