您的位置:首页 > 编程语言 > Qt开发

nuc972平台qt+dfb+2d简单性能对比测试

2017-05-25 23:45 567 查看
经过一段时间的DirectFB学习之后,终于在nuc972平台上将qt+dfb+2d硬件加速跑通了,这边先做了一个简单的性能对比测试,测试单纯跑qt和跑qt+dfb+2d的效果对比试验。

测试内容为让一个窗口绕着屏幕跑圈圈,qt代码如下:

/* tdialog.h */

#ifndef TDIALOG_H_
#define TDIALOG_H_

#include <QtGui>
#include <QDialog>

static QDialog* m_Dialog;

class TDialog : public QDialog
{
Q_OBJECT
public:
TDialog();

virtual ~TDialog();

protected:
void timerEvent(QTimerEvent *event);

private:
int m_nTimerId;
};

#endif


/* main.cpp */

#include <QtGui>
#include <QDialog>
#include "tdialog.h"

static TDialog* m_TDialog;

TDialog::TDialog()
{
m_nTimerId = startTimer(0);
}

TDialog::~TDialog()
{
if(0 != m_nTimerId)
{
killTimer(m_nTimerId);
}
}

void TDialog::timerEvent(QTimerEvent *event)
{
static int x = 0, y = 0;

if(x < 600 && y == 0)
{
x += 10;
}
else if(x == 600 && y < 300)
{
y += 10;
}
else if(x > 0 && y == 300)
{
x -= 10;
}
else if(x == 0 && y > 0)
{
y -= 10;
}

this->move(x, y);
}

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

m_TDialog = new TDialog();

m_TDialog->resize(200, 120);

m_TDialog->move(0, 0);

m_TDialog->show();

return app.exec();
}


我们先来看单独跑qt的效果,如下视频:

(尝试在这里添加视频,但是未成功,请移步优酷观看)

nuc972平台qt测试之窗口移动实验

看完单独跑qt的效果我们再来看下跑qt+dfb+2d的测试效果,如下:

(尝试在这里添加视频,但是未成功,请移步优酷观看)

nuc972平台qt+dfb+2d测试之窗口移动实验

可以看出首先视觉上启用了2D硬件加速后窗口跑的更快了,然后在从CPU的使用情况来看,跑qt+dfb+2d时CPU使用率在60%左右,而单独跑qt的CPU使用率已接近100%,可以看出使用了2D硬件加速后性能提升明显。本次测试主要影响性能的就是矩形填充和块传输了,在没有硬件支持的情况下CPU需要通过memset和memcpy函数来实现这两点所以是非常影响性能的,特别是memcpy函数。

我这边适配的dfb硬件加速驱动也只适配了画线、矩形填充,Bitblt块传输,还有alpha混合等更强大的功能暂未做适配,后续将把它更完善后整理出来分享给大家使用。

nuc972开发板购买地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: