Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
Нажимаем на кнопку, выполняется операция, по окончании показывается время, за каторое она была выполнена - как это осуществить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 21:29 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
Засечь DateTime.Now в начале обработки и в конце, вычесть первое из второго :) Ради пущей точности можно использовать DateTime.Now.Millisecond, вплоть до тиков(ticks). Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 21:33 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
а если не устраивает и эта точность (msec), используй PerformanceCounter из System.Diagnostics ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 22:28 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
Ну в общем да. Только там еще и тики есть DateTime.Now.Tiks - меньше думаю не будет :) Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 22:31 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
к сожалению тики в datetime тикают не по 1, а сразу пачкой (WinApi GetSystemTimeAdjustment - через нее можно узнать размер пачки на каждый тик часов, которая прибавляется к текущему значению time-of-day часов ) PerformanceCounter'ы значительно точнее ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 22:44 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
<OFF> сбор информации о производительности проводится через Api функции ZwCreateProfile/ZwSetIntervalProfile/ZwStartProfile/ZwStopProfile и др. Они используют Performance Monitoring Interrupt (PMI) процессора, и в обработчике этого прерывания собирают информацию о состоянии программы. --- PS: Более подробную информацию можно найти в главе 15 "Debugging and Performance Monitoring", Volume 3, System Programming Guide, IA-32 Intel® Architecture Software Developer’s Manual. </OFF> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 23:26 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
Спасибо. А чему равен один tick? Каждый раз получаю жуткие числа и не понимаю как их интерпретировать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 23:36 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
1 тик = 100 наносекунд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 23:47 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
кузяк сожалению тики в datetime тикают не по 1, а сразу пачкой (WinApi GetSystemTimeAdjustment - через нее можно узнать размер пачки на каждый тик часов, которая прибавляется к текущему значению time-of-day часов ) Согласен, PerformanceCounter для этого и предназначены, и гораздо точнее. Но судя по задаче, человеку будет тостаточно секунд/десятых/сотых. А уж тики судя по его же словам это слишком :). 2 smathcopm Примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Хотя можно еще доработать в зависимости от требуемой точности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 01:04 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
... ни хрена себе точность, а как компьютер вообще может такое измерить? Он ориентируется на частоту процессора? (ну не может же быть, что биосовское время настолько точно "тикает") И как я заметил пачки этих tick-ов довольно большие - у меня несколько десятков тысяч штук за раз... ... вообщем-то мне так точно не надо, но не тики не милисекунды мне почему-то не дают того, что надо: всё время "0"... хотя проходит довольно много времени (около секунды), но иногда (ничего не меняя) вижу и правдивые результаты. Начало и конец отсчёта расставляю корректно... Может кто подскажет в чём может быть проблема... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 01:07 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
2Magnus23: А этот sleep обязателен? Я всегда думал, что он тормозит выполнение операции, а мне только этого и не хватает. Моя задача - математические расчёты, поэтому требуется точность и скорость. Помню ещё на delphi мне слипы всю систему вешали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 01:15 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
smathcopm2Magnus23: А этот sleep обязателен? Я всегда думал, что он тормозит выполнение операции, а мне только этого и не хватает. Моя задача - математические расчёты, поэтому требуется точность и скорость. Помню ещё на delphi мне слипы всю систему вешали... Слип, нет конечно :). С его помощью я имитировал твои расчеты :), убери нафик. На счет твоей проблемы. Опиши подробнее плиз. А лучше код кинь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 01:51 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
... ни хрена себе точность, а как компьютер вообще может такое измерить? Он ориентируется на частоту процессора? (ну не может же быть, что биосовское время настолько точно "тикает") И как я заметил пачки этих tick-ов довольно большие - у меня несколько десятков тысяч штук за раз... Как сказал Кузя, 1 тик = 100 наносекунд, так что , твой "раз" это для проца немеряно времени :) Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 02:19 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
разрешающая способность обычного таймера (что на IBM PC AT, что на Intel Pentium IV) одна и таже ~ 54 миллисекуды. и если операции длятся менее этого периода, то, есте-но, получаешь 0 если на компютере есть так называемый "high-resolution performance counter", то время выполнения можно более точно засекать "в лоб" [без всяких performance counter прибамбасов]. см., например: How To Use QueryPerformanceCounter to Time Code in Visual C# .NET ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 03:07 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
<OFF> сейчас прогнал их пример на своей машине и получил 8.38 E-06 (против 10.82 E-06 в прилагаемом примере от MS). хоть и было желание поменять процессор, то теперь малость поостыл :-) не все так плохо, как оказалось ... </OFF> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 03:57 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
Вообще есть интересная статейка по поводу засекания интервалов меньших чем допускает системный таймер в мартовском MSDN Magazine. _________________________________________________ Легче написать не правильную программу чем понять правильную (С) Alan Perlis ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 19:26 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
http://www.rsdn.ru/forum/Message.aspx?mid=249579&only=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2004, 17:53 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
В исходнике чёрт ногу сломит :), а программку кину. Она под ПК идёт, хоть и создаётся для КПК. Так вот после выполнения вычисления там внизу я хочу чтоб показывалось затраченное время. А я так понимаю, что на КПК эти тики в такие пачки сгрупированы, что проще в годах измерять (шутка... с долей правды). Видимо по этому у меня ноль-то и выходил. Сейчас нет возможности проверить, попробую завтра. P.S.: Программа очень сырая, но если вы мне выскажете свои замечания буду неимоверно признателен (я всё-таки не объективен). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2004, 23:51 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
Для справки: Pocket PC 2003 с .Net версии 1.1 не знает ни милисекунд ни тиков и уж тем более PerformanceCounter реализовать на нем нереально - нет необходимых библиотек... Получается, что максимум возможного... секунды? Меня не только КПК интересует, мне интересно, как ещё можно решить данную проблему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 02:02 |
|
||
|
Как засечь время выполнения операции?
|
|||
|---|---|---|---|
|
#18+
smathcopm Для справки: Pocket PC 2003 с .Net версии 1.1 не знает ни милисекунд ни тиков и уж тем более PerformanceCounter реализовать на нем нереально - нет необходимых библиотек... Получается, что максимум возможного... секунды? См. /topic/97189&pg=1#718421 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 15:48 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=32637743&tid=1438638]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 258ms |
| total: | 436ms |

| 0 / 0 |
