Кроме того ряд замечаний:
1) По циклу while()
Условие, видимо, составлено неправильно. Вы дожидаетесь окончания любого одного потока, но потом сравниваете время выполнения потоков, хотя если один из них к этому времени не завершился, то время выполнения будет равен 0.
Правильное условие
C++ (Qt)
while((!Thread1.isFinished() ) || (!Thread2.isFinished()))
Кроме того не очень хорошо крутить пустой цикл и жрать процессор, намного логично будет отдавать его потокам:
C++ (Qt)
while((!Thread1.isFinished() ) || (!Thread2.isFinished()))
QThread::yieldCurrentThread();
2) По cout'у:
а) По вашему выводу в консоль видно, что он не потокобезопасен.
Чтобы это встречалось реже надо вместо \n везде использовать endl (который в себя включает flush).
Ну или вместо cout использовать qDebug().
б) надо понимать, что на вывод вы тратите намного больше времени, чем на действия в цикле, так что вы фактически сейчас измеряете время, которое тратится на вывод данных.
3) смысл
от меня ускользает.