zoukankan      html  css  js  c++  java
  • c#实现自定义window performance counter

    下面是一个简单的实现 操作自定义window performance counter的实例。在运行程序的过程中我们通过操作系统的performance面板查看或者写log文件,对我们应用程序的性能进行监视,分析。将有助于我们分析解决系统的性能等问题。

    代码功能: 

    1,实现添加一个counter 类别

    2,添加一个或者多个counter对象

    3,获取counter对象,并赋值。

    在系统的performance 面板中查看。效果如下图:

    代码:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Threading;
    using System.Diagnostics;

    namespace WritePerformanceLog
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    if (!PerformanceCounterCategory.Exists("test_Category_1"))
                {
                    
    // Create a collection of type CounterCreationDataCollection.
                    System.Diagnostics.CounterCreationDataCollection CounterDatas =
                       
    new System.Diagnostics.CounterCreationDataCollection();
                    
    // Create the counters and set their properties.
                    System.Diagnostics.CounterCreationData cdCounter1 =
                       
    new System.Diagnostics.CounterCreationData();
                    System.Diagnostics.CounterCreationData cdCounter2 
    =
                       
    new System.Diagnostics.CounterCreationData();
                    cdCounter1.CounterName 
    = "Counter1";
                    cdCounter1.CounterHelp 
    = "help string1";
                    cdCounter1.CounterType 
    = System.Diagnostics.PerformanceCounterType.NumberOfItems64;
                    cdCounter2.CounterName 
    = "Counter2";
                    cdCounter2.CounterHelp 
    = "help string 2";
                    cdCounter2.CounterType 
    = System.Diagnostics.PerformanceCounterType.NumberOfItems64;

                    
                    
    // Add both counters to the collection.
                    CounterDatas.Add(cdCounter1);
                    CounterDatas.Add(cdCounter2);
                    
    // Create the category and pass the collection to it.
                    System.Diagnostics.PerformanceCounterCategory.Create(
                       
    "test_Category_1""Category help", CounterDatas);
                }
                
    else
                {

                    PerformanceCounter cdCounter1 
    = new PerformanceCounter("test_Category_1""Counter1"false);
                    PerformanceCounter cdCounter2 
    = new PerformanceCounter("test_Category_1""Counter2"false);
                    
                    cdCounter1.ReadOnly 
    = false;

                    
    forint i=0;i<10000;i++ )
                    {
                        cdCounter1.RawValue 
    = i;
                        
    //cdCounter1.Increment();

                        cdCounter2.RawValue 
    = i+1;

                        Thread.Sleep(
    100);
                    }
                                               

                    Console.WriteLine(cdCounter1.NextValue());
                    Console.WriteLine(cdCounter2.RawValue);
                    Console.WriteLine(cdCounter1.NextSample());


                    Console.Read();

                }
            }
        }
    }

  • 相关阅读:
    Codeforces Round #595 (Div. 3) A,B,C,D
    计算几何板子题【2019牛客国庆集训派对day7——三角形和矩形】【多边形相交的面积】
    [POJ]POJ1753(dfs)
    [POJ]POJ2965(dfs)
    洛谷 P1772 [ZJOI2006]物流运输 题解
    简单概率与期望
    洛谷 P3802 小魔女帕琪 题解
    用树状数组实现的平衡树
    【模板】扩展中国剩余定理(EXCRT)
    新博客开通通知
  • 原文地址:https://www.cnblogs.com/luyinghuai/p/1272662.html
Copyright © 2011-2022 走看看