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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парадокс с измерением времени 
V
    Опции темы
4ybaka
Дата 19.10.2008, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Замеряю работы дискретного и быстрого преобразования Фурье. Замеряю при помощи QueryPerformanceCounter и DateTime.Now.
выполняю такой вот код:
Код

                DateTime start = DateTime.Now;
                counter.Start();
                Complex[] y = MathLib.FT(x);
                counter.Stop();
                DateTime end = DateTime.Now;

аналогично для БПФ. после подсчета времени оказывается что по QueryPerformanceCounter (обертка через counter) ДПФ выполняется ровно на 1 сек дольше(1.34 против 0.34), а для БПФ ровно (0.015)
Кто может объяснить такой парадокс?на мсдн вычитал что QueryPerformanceCounter вроде плохо ладит с многопроцессорными системами. так ли это? и почему тогда БПФ нормально считает?пробовал до начала подсчета запускать QueryPerformanceCounter  и сбрасывать.не помогло.


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
gambit
Дата 19.10.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



Цитата(4ybaka @  19.10.2008,  19:52 Найти цитируемый пост)
QueryPerformanceCounter вроде плохо ладит с многопроцессорными системами. так ли это?

Да это так, потому что процессор может перекидывать процесс между ядрами, а некоторые отличившиеся особи еще и изменять частоту.
Кроме того QueryPerformanceCounter это еще и api функция, т.е. неуправляемая.

измеряй либо через DateTime.Now, либо через DateTime.Now.Ticks, еще есть класс StopWatch который по заявлению Microsoft заменяет QueryPerformanceCounter.
PM MAIL ICQ Skype   Вверх
4ybaka
Дата 19.10.2008, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Разобрался. Они там в Редмонде умеет мозги пудрить smile Использовал Milliseconds вместо TotalMilliseconds. А первая есть ни что иное, как TotalMilliseconds % 1000. Что собственно и приводило к потере секунды.


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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