Qt发射时间为30ms,这可能吗?

Qt emit taking 30ms, is that possible?

本文关键字:发射 时间 30ms Qt      更新时间:2023-10-16

我想提高我的项目的性能,所以我想弄清楚哪个操作是耗时的。

我注意到我的emit函数需要30ms,这可能只是发送数据吗?

代码如下:

void MainWindow::play(){
unsigned char* img;     //Size is 1280*720*2
img = camera1->captureLastFrame();
timer.start(); 
emit video(img); 
qDebug()<<QString::number(timer.nsecsElapsed()/1000000) + " ms";
}

qDebug显示30ms。是我做错了什么还是手术真的需要时间?

EDIT:

信号和插槽声明/连接。

signals: 
     void video(unsigned char* copy);
private slots: 
     void play();
connect(this, SIGNAL(video(unsigned char*)), ui->widget, SLOT(videodisplay(unsigned char*)));

如果连接在单个线程中,则执行emit命令和插槽,然后程序继续执行下一行,即qDebug。所以可能不是信号慢,而是连接到它的插槽。

尝试删除使用该信号的所有连接,并每次添加一个以检查慢的连接。或者,更好的是,尝试使用一个分析器来检查这个操作中的瓶颈(Linux上的valgrind, windows上的glowcode或类似的)。