Многопоточная производительность QVariant::fromValue в Windows

Почему в Windows QVariant::fromValue из нескольких потоков работает в сто раз медленнее, чем в одном потоке? В Linux такого не наблюдается. Версия Qt - 5.5.1 (mingw32, Windows 11).

class MyStruct {};

Q_DECLARE_METATYPE(MyStruct)

int main(int, char*[])
{
    QElapsedTimer t1; t1.start();

    for (int i = 0; i < 1000000; i++) {
        QVariant::fromValue(MyStruct());
    }

    qDebug() << t1.elapsed();  // ~ 100 мс

    QElapsedTimer t2; t2.start();
    QFutureSynchronizer<void> synchronizer;

    synchronizer.addFuture(QtConcurrent::run([]() {
        for (int i = 0; i < 500000; i++) {
            QVariant::fromValue(MyStruct());
        }}));

    synchronizer.addFuture(QtConcurrent::run([]() {
        for (int i = 0; i < 500000; i++) {
            QVariant::fromValue(MyStruct());
        }}));

    synchronizer.waitForFinished();
    qDebug() << t2.elapsed(); // ~ 10000 мс

    QThreadPool::globalInstance()->waitForDone();
    return 0;
}

Ответы (0 шт):