Meg*_*300 3 c++ performance qt
我正在努力提高项目的性能,所以我想弄清楚哪个操作需要时间.
我注意到我的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";
}
Run Code Online (Sandbox Code Playgroud)
该qDebug显示器30毫秒.我做错了什么,或者这个操作真的需要时间吗?
编辑:
信号和插槽声明/连接.
signals:
void video(unsigned char* copy);
private slots:
void play();
connect(this, SIGNAL(video(unsigned char*)), ui->widget, SLOT(videodisplay(unsigned char*)));
Run Code Online (Sandbox Code Playgroud)
如果连接在单个线程中,则执行emit命令以及插槽,然后程序继续执行下一行qDebug.所以可能不是信号慢,而是连接到它的插槽.
尝试使用该信号删除所有连接,并一次添加一个以检查慢速.或者,更好的是,尝试使用分析器来检查此操作中的瓶颈(Linux上的valgrind,窗口中的glowcode或类似内容).