Почему один поток быстрее, чем просто вызов функции, mingw

При вызове функции время выполнения составляет 6,8 сек. Вызов его из потока занимает 3,4 с, а при использовании 2 потока - 1,8 с. Независимо от того, какую оптимизацию я использую, рационы остаются неизменными.

В Visual Studio время, как ожидается, составляет 3,1, 3 и 1,7 сек.

#include
#include
#include
#include 

using namespace std;

#define N 400

float a[N][N];

struct b{
    int begin;
    int end;
};

DWORD WINAPI thread(LPVOID p)
{
    b b_t = *(b*)p;

    for(int i=0;i

Ответы на вопрос(4)

Ваш ответ на вопрос