You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,97 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="ClientConfigPerf.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user