PerfCounter
От: McHarny Россия  
Дата: 22.06.04 14:07
Оценка:
Hello, All!

Народ, я смотрю вы пользуете класс PerCounter. а где он находится и как его
взять, в стандартном фреймворке я что-то не нарыл

---------------------------------------
WBR, Michael U. Charny AKA McHarny
McHarny@mailops.com, McHarny@msk.orw.ru
=======================================
¦ Спирт, клофелин и димедрол — именно эти три компонента делали Айболита добрым
Posted via RSDN NNTP Server 1.9 beta
Re: PerfCounter
От: master_of_shadows Беларусь  
Дата: 22.06.04 14:14
Оценка:
Здравствуйте, McHarny, Вы писали:

MH>Hello, All!


MH>Народ, я смотрю вы пользуете класс PerCounter. а где он находится и как его

MH>взять, в стандартном фреймворке я что-то не нарыл

MH>---------------------------------------

MH>WBR, Michael U. Charny AKA McHarny
MH>McHarny@mailops.com, McHarny@msk.orw.ru
MH>=======================================
MH>¦ Спирт, клофелин и димедрол — именно эти три компонента делали Айболита добрым

ms-help://MS.VSCC/MS.MSDNVS/cpgenref/html/gngrfperformancecounters.htm

    ...take a look at the sky, just before you die...
    << RSDN@Home 1.1.3 stable >>
Re: PerfCounter
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 22.06.04 14:17
Оценка:
Здравствуйте, McHarny, Вы писали:

MH>Народ, я смотрю вы пользуете класс PerCounter. а где он находится и как его

MH>взять, в стандартном фреймворке я что-то не нарыл

В стандартном будет только в 2.0. А пока вот ( (С) Влад):
using System;
using System.Runtime.InteropServices;

namespace Utils
{
    /// <summary>
    /// Эта структура позволяет подсчитать скорость выполнения кода одним из
    /// наиболее точным способов. Фактически вычисления производятся в тактах
    /// процессора, а потом переводятся в милисекунд (десятичная часть 
    /// является долями секунды).
    /// </summary>
    public struct PerfCounter
    {
        Int64 _start;

        /// <summary>
        /// Начинает подсчет вермени выполнения.
        /// </summary>
        public void Start()
        {
            _start = 0;
            QueryPerformanceCounter(ref _start);
        }

        /// <summary>
        /// Завершает полсчет вермени исполнения и возвращает время в секундах.
        /// </summary>
        /// <returns>Время в секундах потраченое на выполнение участка
        /// кода. Десятичная часть отражает доли секунды.</returns>
        public float Finish()
        {
            Int64 finish = 0;
            QueryPerformanceCounter(ref finish);

            Int64 freq = 0;
            QueryPerformanceFrequency(ref freq);
            return (((float)(finish - _start) /(float)freq));
        }

        [DllImport("Kernel32.dll")]
        static extern bool QueryPerformanceCounter(ref Int64 performanceCount);

        [DllImport("Kernel32.dll")]
        static extern bool QueryPerformanceFrequency(ref Int64 frequency);
    }
}


P.S. я бы заменил в интеропных методах ref на out.
... << RSDN@Home 1.1.4 beta 2 >>
AVK Blog
Re[2]: PerfCounter
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.06.04 21:19
Оценка:
Здравствуйте, AndrewVK, Вы писали:

А зря ты исходники не читаешь.

Точное измерение производительности в дотнете
Автор: VladD2
Дата: 23.04.03
... << RSDN@Home 1.1.4 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: PerfCounter
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.06.04 21:19
Оценка:
Здравствуйте, McHarny, Вы писали:

MH>Народ, я смотрю вы пользуете класс PerCounter. а где он находится и как его

MH>взять, в стандартном фреймворке я что-то не нарыл

Точное измерение производительности в дотнете
Автор: VladD2
Дата: 23.04.03
... << RSDN@Home 1.1.4 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: PerfCounter
От: Павел Леонов Россия icq: 138726397
Дата: 22.06.04 23:05
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, McHarny, Вы писали:


MH>>Народ, я смотрю вы пользуете класс PerCounter. а где он находится и как его

MH>>взять, в стандартном фреймворке я что-то не нарыл

VD>Точное измерение производительности в дотнете
Автор: VladD2
Дата: 23.04.03


Все спросить хотел. Вот код, в нем два одинаковых куска:

[STAThread]
static void Main(string[] args)
{
    PerfCounter perf = new PerfCounter();
        
    int m = 0;
    int count = 1000000;

    perf.Start();

    for(int i=0; i<count; i++)
    {
        m = 0;
    }

    Console.WriteLine("time : {0}", perf.Finish());

        
    perf.Start();

    for(int i=0; i<count; i++)
    {
        m = 0;
    }

    Console.WriteLine("time : {0}", perf.Finish());

    Console.ReadLine();
}


Время такое:

time : 0,003711366
time : 0,001528686


Можно менять контент циклов, но разница сохраняется. Что там может происходить, или просто железо такое?
Re[3]: PerfCounter
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.06.04 23:38
Оценка: +1
Здравствуйте, Павел Леонов, Вы писали:

ПЛ>Можно менять контент циклов, но разница сохраняется. Что там может происходить, или просто железо такое?


1. Это слишком малая величина для измерений.
2. В начеле запуска приложения дотнет инициализирует свои дела. Попробуй просто вставить Sleep на секунду.
... << RSDN@Home 1.1.4 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: PerfCounter
От: Sulik Россия http://nickpasko.blogspot.com
Дата: 24.06.04 03:24
Оценка:
Здравствуйте, master_of_shadows, Вы писали:

__>ms-help://MS.VSCC/MS.MSDNVS/cpgenref/html/gngrfperformancecounters.htm


Почему-то не открывается, ни как линк, ни при copy/paste в МСДН..
Сознание определяет бытие!
Re[3]: PerfCounter
От: master_of_shadows Беларусь  
Дата: 24.06.04 07:54
Оценка:
Здравствуйте, Sulik, Вы писали:

S>Здравствуйте, master_of_shadows, Вы писали:


__>>ms-help://MS.VSCC/MS.MSDNVS/cpgenref/html/gngrfperformancecounters.htm


S>Почему-то не открывается, ни как линк, ни при copy/paste в МСДН..


Поищи Performance Counters в msdn.

    ...take a look at the sky, just before you die...
    << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.