Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с таймером, Помогите плиз 
:(
    Опции темы
max-anikin
Дата 1.2.2005, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2004

Репутация: 1
Всего: 1



Стоит такая простенькая задачка (на первый взгляд) smile ... Нужно отследить время, затраченное на выполнение каких-то функций ... каким образом это лучше реализовать ?? Пытался двумя способами:
1. Используя System.Timers.Timer задавал Timer.Interval = 1 на Elapsed вешал функцию увеличивающую некоторый счетчик. Затем Timer.Start() Timer.Stop() и получал в счетчике время в миллисекундах которое прошло.
2. Написал небольшой классик. На старте функции засекал текущую дату в конце функции опять текущую дату и получал разницу.

Код

public class LifeTimeCounter
{
 private DateTime _Start;
 private DateTime _End;
 private TimeSpan _WorkingInterval;

 public double WorkingInterval
 {
  get { return _WorkingInterval.Milliseconds; }
 }

 public void Start() { _Start = DateTime.Now; }

 public void Reset() { _WorkingInterval = TimeSpan.Zero; }

 public void Stop()
 {
  _End = DateTime.Now;
  _WorkingInterval = _End - _Start;
 }
}

затем где-то
Код

private void ExpandOrSelchange(string selNodeIndex)
 {
  try
  {
   LifeTimeCounter Expand = new LifeTimeCounter();
   Expand.Start();
                       ...
   Expand.Stop();
   GTrace.LogInfo(String.Format("Expand Node function works {0} ms", Expand.WorkingInterval));
}


проблема в том что интервалы разные получались. И я не знаю в чем трабл. Может использовать таймеры и в поток его отдельный запихать ... или как его лучше сделать чтобы четко получить временной интервал.
PM MAIL ICQ   Вверх
Domestic Cat
Дата 1.2.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172



Самый простой вариант - поставить до метода и после DateTime.Now.Millisecond и вычесть.

Цитата(max @ 1.2.2005, 12:20)
проблема в том что интервалы разные получались.


Естественно. Время выполнения метода - не постоянная величина, она может зависеть от чего угодно, например от загрузки процессора на данный момент.


--------------------

PM   Вверх
Coocky
Дата 1.2.2005, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Цитата
проблема в том что интервалы разные получались. И я не знаю в чем трабл

Эта тема уже давно обсуждалась.Я давно говорил-не надо вычислять таймеры с точНОСТЬЮ ,как в NASA!Бесполезно!
Domestic Cat
Цитата
Естественно. Время выполнения метода - не постоянная величина, она может зависеть от чего угодно, например от загрузки процессора на данный момент.

Абсолютно правильно!Небось хочешь проверить насколько быстра твоя функция?Так для этого есть в студии утилитка в отладке...

Это сообщение отредактировал(а) Coocky - 1.2.2005, 22:13


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.