Для точных измерений времени/скорости приостанавливаю все вычисления, чтобы загрузка процессора была пара процентов (фоновая активность ОС), не более. И при этом уже разброс времени доли секунды (просто лень точнее учитывать).
Это
GetThreadTimes такие результаты выдаёт?
Нет, это внешней утилитой измеряется полное время выполнения .exe файла:
Цитата:
Calculate programs work time Version 1.01 Copyright (c) 1998 Vladimir Tarasov
Usage: wt.exe <prog_name.exe> [<parameters>]
Тем более что обычно интересует как раз полное время выполнения .exe, а не разбивка его по потокам. Добавлять в каждую программу измерение времени и его вывод - лень. А когда и делаю, то использую
GetTickCount в основном потоке, её достаточно.
Andrey_KireewВ один поток всё красиво и правильно (если проигнорировать что
), в 4 - тот же бред. Что-то у Вас с делением задачи не то ... Но что - не пойму. Не могу придумать ситуацию когда 4 независимых потока будут так тормозить на 4Мб данных (при отсутствии фоновых) ...
Что я попробовал бы сделать: запустить потоки остановленными (предпоследний параметр = CREATE_SUSPENDED), потом в цикле вызывать ResumeThread с ожиданием завершения каждого (WaitForSingleObject). Т.е. запустить 4 потока, но не одновременно, а строго последовательно. И убедиться что время снова станет 111с без скачков. Правда что это даст не очень понятно. Хотя если станет не 111с или будут большие скачки - ищите ошибку при делении задачи.