Не совсем ясно, является ли разница во времени выполнения результатом двух разных входов (изображений) или просто двух разных методов измерения во время выполнения (разница часов и измерений программного обеспечения Intel).Кроме того, вы не показываете нам, что происходит в create_threads_and_do_work (), и вы не упомянули, какой инструмент в Intel Parallel Studio вы используете, это Vtune?
Ваш разностный метод clock_t суммирует обработкувремя потока, вызвавшего его (основной поток в вашем примере), но он может не учитывать время обработки потоков, созданных в create_threads_and_do_work ().От того, будет ли это или нет, зависит от того, ожидаете ли вы в этой функции завершения всех потоков и только затем выходите из функции, или просто порождаете потоки и выходите немедленно (до того, как они завершат обработку).Если все, что вы делаете в этой функции, - это функция parallel_for (), то разница в clock_t должна давать правильный результат и не должна отличаться от других измерений во время выполнения.
В Intel Parallel Studio есть инструмент профилирования, который называетсяVtune.это мощный инструмент, и когда вы запускаете свою программу через него, вы можете просматривать (графически приятным способом) время обработки (а также время, которое вызывается) каждой функции в вашем коде.Я почти уверен, что после этого вы, вероятно, поймете это.
Последняя идея - завершила ли программа свой курс при использовании программного обеспечения Intel?Я спрашиваю, потому что иногда Vtune собирает данные в течение некоторого времени, а затем останавливается, не позволяя программе завершиться.