Russian Qt Forum

Программирование => С/C++ => Тема начата: Igors от Май 08, 2013, 15:04



Название: clock() + MP
Отправлено: Igors от Май 08, 2013, 15:04
Добрый день

Вроде бы безобидный замер времени в секундах
Код
C++ (Qt)
clock_t timeStart = clock();
DoSomething();
int elapsed = (clock() - timeStart) / CLOCKS_PER_SEC;

Однако если в DoSomething() работают неск ниток - elapsed не соответствует замеренному по моим настенным часам.  Напр на 1 нитке имеем 40 сек, elapsed = 40. На 4 нитках имеет 15 сек, но elapsed = 39(40)

Эту шутку я не знал  :)


Название: Re: clock() + MP
Отправлено: Disa от Май 12, 2013, 22:32
То есть нужно делать таймер у каждой нитки и брать самый долгий?


Название: Re: clock() + MP
Отправлено: Igors от Май 14, 2013, 08:22
Бегло погуглив я увидел фразу типа "clock меряет время процесса" - наверное надо понимать "всеми нитками". Это может быть полезным напр сразу замерять и "время по часам" (используя др ф-ции) и время как бы с 1 ядром (используя clock)


Название: Re: clock() + MP
Отправлено: Bepec от Май 14, 2013, 08:30
Так же бегло погуглив, можно узнать что он вроде бы меряет выполненные инструкции процессора для процесса в котором вызван. Недостоверная информация конечно же, но мне она больше нравится :P