Многопоточная производительность 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;
}