Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2011, 12:12   #1
KimboSlice
Новичок
Джуниор
 
Регистрация: 07.05.2011
Сообщений: 4
По умолчанию Высокоточный замер времени

Уважаемые коллеги, необходимо провести высокоточный замер времени выполнения участка кода(до микросекунд).
VS10 .NET 4.0

Помогите, пожалуйста, кто сталкивался с такой задачей.
KimboSlice вне форума Ответить с цитированием
Старый 07.05.2011, 12:46   #2
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Смотрите на класс Stopwatch
Spawn™Production® вне форума Ответить с цитированием
Старый 07.05.2011, 15:35   #3
KimboSlice
Новичок
Джуниор
 
Регистрация: 07.05.2011
Сообщений: 4
По умолчанию

Большое спасибо, единственное что хотелось бы узнать - это нельзя ли свойство Stopwatch.ElapsedTicks соотнести с известными единицами измерения времени ? микросекунды, наносекунды ?
KimboSlice вне форума Ответить с цитированием
Старый 07.05.2011, 16:25   #4
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Миллисекунды это количество тиков, разделённое на 10000, насколько я знаю, так что остальное не трудно посчитать.
Spawn™Production® вне форума Ответить с цитированием
Старый 07.05.2011, 17:57   #5
KimboSlice
Новичок
Джуниор
 
Регистрация: 07.05.2011
Сообщений: 4
По умолчанию

Вы не правы, количество тиков за секунду зависит от тактовой частоты процессора
KimboSlice вне форума Ответить с цитированием
Старый 07.05.2011, 23:13   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Винда не является системой реального времени и ни о каких точностях в микросекунды можете даже не мечтать.
pu4koff вне форума Ответить с цитированием
Старый 08.05.2011, 00:33   #7
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

ну можно ведь таймер замутить и тупо время считывать и вычитать, хоть какое-то подобие
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 08.05.2011, 07:57   #8
KimboSlice
Новичок
Джуниор
 
Регистрация: 07.05.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Винда не является системой реального времени и ни о каких точностях в микросекунды можете даже не мечтать.
Откуда тогда такие возможности в других технологиях ?

Тем не менее, большое всем спасибо, в контексте моей задачи время, расчитанное как Stopwatch.ElapsedTicks / (тактовая частота процессора), вполне устраивает
KimboSlice вне форума Ответить с цитированием
Старый 08.05.2011, 09:18   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от KimboSlice Посмотреть сообщение
Откуда тогда такие возможности в других технологиях ?
Это в каких это?
Сами подумайте: если работает одна ваша программа, то время затратится одно, т.к. ресурсы свободны. Если же в фоне запустить какой-то сложный расчет и загрузить процессор, то и ваша программа будет медленнее выполняться. Что касается тактовой частоты процессора, то есть Turbo Boost, которых "на лету" меняет эту самую частоту.
Если производите анализ скорости выполнения алгоритмов, то лучше это делать в специализированных программах (профайлерах).
pu4koff вне форума Ответить с цитированием
Старый 08.05.2011, 09:58   #10
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Цитата:
Сообщение от KimboSlice Посмотреть сообщение
Вы не правы, количество тиков за секунду зависит от тактовой частоты процессора
Об этом уже позаботились и без меня...
Код:
        double num2 = rawElapsedTicks;
        num2 *= tickFrequency;
        return (long) num2;
Проще говоря, в .NET'е это конечно учтено.
Spawn™Production® вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зависимость от времени Helen09 JavaScript, Ajax 2 29.10.2010 12:38
Замер времени выполнения nickel-j Компоненты Delphi 3 28.05.2010 17:02
Таймер высокоточный stanik123 Общие вопросы Delphi 5 12.10.2009 08:12
Измерение времени в c# byte916 Помощь студентам 4 06.03.2009 21:18