2014-12-09 3 views
0

Итак, я работаю над назначением c, которое генерирует массив и использует потоки для определения разных характеристик.Время записи программы

В конце программы мне нужно напечатать время стены, время пользователя и системное время. Я думал, что сделал это правильно, но мои результаты, похоже, указывают на другое.

После нескольких тестов пользовательское время почти всегда равно 0, и системное время всегда равно 0. Я знаю, что время пользователя должно быть больше, чем время стены, поскольку это многопоточный код.

Вот как я его расчета, если кто-то может указать на мою ошибку или объяснить, почему его получение неправильное время то, что было бы здорово:

EDIT: проблема не имеет никакого значения с кодом. (что-то было не так в моих потоках) спасибо

+0

struct timeval dif = finish; Вы назначаете diff. Но вы получаете доступ к diff. Я думаю, что это твоя вина. –

+0

@ Karthikeyan.R.S Это была просто опечатка от копирования. исправлено в редакции – ComputerDope

+0

Не могли бы вы добавить свою часть кода, связанную с этой функциональностью, с вашим запросом? с нашим видением вашего кода наше предположение довольно расплывчато. –

ответ

0

Системное время должно быть почти обязательно равным нулю, я бы не ожидал, что много времени будет потрачено в режиме ядра. Что касается времени пользователя, равного нулю, возможно, что все операции занимают менее одного CPU tick. Если вы пытаетесь выполнить короткую операцию (например, один вызов malloc или что-то еще), то я определенно ожидаю, что время будет равным нулю.

+0

Код имеет намного больше операций, чем это. Это включает в себя создание нескольких потоков для итерации по большому массиву и вычисления суммы или макс. Поэтому я чувствую, что время должно быть другим – ComputerDope

+0

Вы рассчитываете время для каждого потока или после того, как все потоки завершены? – nchen24

+0

У меня только то, что у меня выше. Я вычисляю перед всем, делаю все с моими нитями, а затем вычисляю разницу, как только все будет сделано – ComputerDope

Смежные вопросы