Qt发射时间为30ms,这可能吗?
Qt emit taking 30ms, is that possible?
我想提高我的项目的性能,所以我想弄清楚哪个操作是耗时的。
我注意到我的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或类似的)。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- C++在变量给定的指定时间内关闭电脑
- rcpp函数中的清理时间很长
- C++:floor unix时间戳到UTC月份
- 如何在c++中录制具有精确帧时间戳的视频
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- KMP算法和LPS表构造的运行时间
- QFuture信号在错误的时间发射
- Qt发射时间为30ms,这可能吗?