标题:关于嵌入式板上QT的update耗费
作者:ghldh94
日期:2019-06-26 11:22
内容:
在把window下的QT应用移植到嵌入式linux中时发现的问题。
为此特意做了个test 测试。
界面只有一个widget.初始化只启动一个timer ,10ms timeout后槽函数中update()。同时qDebug时间戳。
发现在全志的板子上,时间戳几乎要100多ms 才能打印一次。CPU也几乎17%左右降不下来。
这样的效率,做静态UI还好。做动态效果几乎没办法做啊。
有人知道怎么解决这种问题吗?
#1 [九重水 06-26 14:16]
首先,Qt的定时器本来就不准,号称高精度的有20%的误差,这是我测试的,其他人不知道。
另外,有测试代码吗?update函数里面你是怎么写的?处理的事情过多也会导致定时延迟处理。
#2 [liudianwu 06-26 14:25]
你可以设置什么多不要干,就打印时间试试!肯定是你其他地方有问题!全志H3我都用了好几年了,做产品!
#3 [ghldh94 06-26 14:27]
#include "widget.h"
#include "ui_widget.h"
#include
#include
#include
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QTimer *timer = new QTimer;
//新建定时器
connect(timer,SIGNAL(timeout()),this,SLOT(timetest()));
//关联定时器计满信号和相应的槽函数
timer->setTimerType(Qt::PreciseTimer); //设置高精度
timer->start(50);
}
void Widget::paintEvent(QPaintEvent *event)
{
//空的,什么都不做
}
Widget::~Widget()
{
delete ui;
}
void Widget::timetest()
{
update();//更新 ---------仅仅update一下,耗时数十毫秒,若注释掉则无耗费
qDebug()
#4 回 liudianwu 的帖子 [ghldh94 06-26 14:29]
liudianwu:你可以设置什么多不要干,就打印时间试试!肯定是你其他地方有问题!全志H3我都用了好几年了,做产品! (2019-06-26 14:25)
请帮我看看,用的T7.我是没有做其它动作的。另外,用release 重新测试了一下,好了一些,但仍然需要40ms。
#5 回 九重水 的帖子 [ghldh94 06-26 14:37]
九重水:首先,Qt的定时器本来就不准,号称高精度的有20%的误差,这是我测试的,其他人不知道。
另外,有测试代码吗?update函数里面你是怎么写的?处理的事情过多也会导致定时延迟处理。
(2019-06-26 14:16)
定时器不准我也知道,所以我有设置timer->setTimerType(Qt::PreciseTimer); //设置高精度。
在window下基本偏差不会超过2ms(绘图情况).开发板上稍大还能接受,但如题我设置的10ms. 结果打印出来全都是偏差数十ms ,这就太大了。