Посмотрите на следующий код: Image является членом класса типа QImage .
void ImageViewer::setImage(const QImage &newImage)
{
Image = newImage; // takes 108 milliseconds
imageLabel->setPixmap(QPixmap::fromImage(Image)); // takes 58 milliseconds
}
, потому что мне не нужно устанавливать newImage to Image член класса, я просто использую ссылку newImage и экономлю время.Но я был удивлен.
void ImageViewer::setImage(const QImage &newImage)
{
imageLabel->setPixmap(QPixmap::fromImage(newImage)); // takes 158 milliseconds
}
Это занимает то же время.Что мне здесь не хватает?
РЕДАКТИРОВАТЬ Для тех, кто хочет узнать, как я измерял время, я использовал предложенный QElapsedTimer здесь
Изображение всегда одно и то же, часть кодаВыкл. пользовательский свиток.Все, что вам нужно знать, это то же изображение (.jpg) размером 2380x3368, которое загружается каждый раз, когда мы входим в эту функцию.Измеренное время почти всегда одинаково, если в комментариях указано среднее время.
Но лично я считаю, что формат изображения или его размер здесь не главный вопрос.Главный вопрос должен заключаться в том, почему SetPixmap занимает больше времени, когда я использовал ref для существующего QImage, чем для создания нового QImage, который затем отправляется этой функции.Это не имеет никакого смысла.