QImageとQPixmapの速度比較

実験のコード片

void MainWindow::paintEvent(QPaintEvent *){
    QPainter painter(this);
    QTime timer;
    QImage image(256, 256, QImage::Format_ARGB32);
    QPixmap pixmap(QPixmap::fromImage(image));
    timer.start();
    for (int i = 0; i < 10000; ++i){
        painter.drawImage(0, 0, image, 0, 0, 128, 128);
    }
    qDebug() << "QImage" << timer.elapsed();
    timer.start();
    for (int i = 0; i < 10000; ++i){
        painter.drawPixmap(0, 0, pixmap, 0, 0, 128, 128);
    }
    qDebug() << "QPixmap" << timer.elapsed();
}

実行結果

  • QImage
    • 約1400ms
  • QPixmap
    • 約340ms

WindowsXPWindows7とかだとGDIのモデル変わってるから速度違うかもしれないね。

まあ比較的にはQImageのdrawはQPixmapの4倍程度遅い。