项目中有一项功能是在子线程里读数据,数据若发生变化了就发送信号,在槽里更新界面。 程序运行的时候会出现数据变化很频繁的情况,也导致更新界面的信号在短时间内被触发很多次,大大损耗了程序的性能。
因为人眼捕获的帧率有限,所以界面显示不需要太快的刷新速度,把信号槽更新界面改为用定时器更新界面,就能避免某一时间段数据变化过频导致的卡顿问题。
项目中有多线程的操作,所有的线程都是用默认的QThread::InheritPriority优先级。 因为设备的性能有限,让所有的线程都以高优先级去运行,主线程被过多地占用资源,导致界面刷新卡顿的问题。
Qt的线程提供了以下几种优先级(由低到高排列),按照实际情况去设置优先级,可以提高界面的流畅度。 QThread::IdlePriority QThread::LowestPriority QThread::LowPriority QThread::NormalPriority QThread::HighPriority QThread::HighestPriority QThread::TimeCriticalPriority QThread::InheritPriority
项目里有一个子线程的代码结构是这样的。
void run() { while (true) { if (...) { continue; ..... //operate msleep(20); 线程在延时状态下是会把CPU交给其它线程的,避免不停地抢占CPU,以上代码虽然加了延时,但前面有一个判断操作,如果满足了条件,就直接调用continue,如果这个判断条件一直都是满足的,那就会不停地continue,代码也就变成了以下形式。 void run() { while (true) { continue; 等同于一个死循环,这样会大大影响程序的效率。 在每个continue前添加延时。 void run() { while (true) { if (...) { msleep(20); continue; ..... //operate msleep(20); 或者避免使用continue void run() { while (true) { if (...) { ..... //operate msleep(20); 4、优化数据查询方式 如果表中数据量大或者查询频率高,可以使用map容器来存放,以空间换时间,减少查询损耗。 5、通信协议的优化 可以通过优化通信协议来减少客户端和服务端的计算量。 6、减少不必要的IO操作 IO操作是比较耗时的,常见的IO有通信IO和文件IO,可以检查相关代码进行优化。 7、使用VS性能分析工具 https://blog.csdn.net/weixin_45001971/article/details/128419018 Qt是一个跨平台的C++图形用户界面应用程序开发框架。它具有丰富的功能和灵活的分层架构,可帮助开发人员高效地构建可扩展的软件应用程序。以上是Qt分层架构的使用和优化的一些建议,尽管使用分层架构需要耗费一些时间和精力,但最终它会为您节省时间和精力。 最近的项目用到了QT 5.5,项目在运行过程中出现了一段时间CPU占用率持续25%,并频繁断网的情况,遂决定对项目性能进行优化。 优化工具也是VS2010自带的性能分析工具,具体的使用方法参见:http://www.cnblogs.com/smark/archive/2011/10/12/2208039.html 其中可以选择“just my code”过滤出自己编写的代码。 通过性能分析工... 在最近的项目中,发现执行 Qt 程序时,有些情况下的 CPU 占用率奇高,最高高达 100%。项目跑在嵌入式板子上,最开始使用 EGLFS 插件,但是由于板子没有单独的鼠标层,导致鼠标移动起来卡顿,很不流畅,所以换成了 LinuxFB 插件。但是如果 CPU 占有率高了的话,也会导致鼠标卡顿,因为鼠标是由 Qt 应用程序层负责绘制的,如果应用程序 CPU 占有率高了的话,也会导致鼠标绘制缓慢,导致鼠标卡顿。 大家对于Qt诟病比较多的地方就是性能,尤其在嵌入式或者比较低端的平台上。所以在Qt4.5中,第一条设计理念就是提升Qt的运行时性能,内部项 目代号称之为Falcon – 猎鹰,目的就是想让Qt飞起来。:-) 其实性能优化在Qt4.5中,算是最最重要,最核心的改进了。为什么放在最后再说,是因为其中所包含的改进是在是太多了,也非常具体,很难简单的概 括。但是,从另一方面来说,对于Qt应用程序的开... Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智嵌入式系统 QNX、VxWorks 等等。一般来说Qt主要用于桌面程序开发和嵌入式开发。Qt性能优化!!这是一个非常适合中级... # 一、思维导图# 二、什么是性能优化?性能优化指在不影响系统运行正确性的前提下,使之运行得更快,完成特定功能所需的时间更短,或拥有更强大的服务能力。## 关注不同程序有不同的性能关... Qt 程序优化 编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行。编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高 //选择编译release模式,在pro文件根据优化的需要添加语句: QMAKE_CXXFLAGS_RELEASE += -O # Release -O QMAKE_CXXFLAGS_RELEASE += -... 1)Debug模式和Release模式处理不一样,因此可能出现Debug模式下没有问题,正式发布上线后就有问题 2)研发开发的时候为了方便可以用Debug模式,但给测试同学测试的时候一定要用Release模式,否则就可能出现上述问题 这是因为Release模式生成的代码会进行优化,比如while循环。 场景举例:使用一个bool变量控制线程暂停和继续来决定是否执行后面步骤 MyThread.cpp #include "mythread.h" MyThread::MyThread(QObject *paren 调试系统信息调用变量,默认在QT-OPTION-DEBUG-CDB PATH中。 删除从服务器更新命令 使用symchk 命令下载变量到本地,设置CDB PATH的变量为本地目录 更新命令:symchk /r c:\windows\system32 /s SRV*d:\symbolcache*http://msdl.microsoft.com/download/s...
void run() { while (true) { if (...) { continue; ..... //operate msleep(20); 线程在延时状态下是会把CPU交给其它线程的,避免不停地抢占CPU,以上代码虽然加了延时,但前面有一个判断操作,如果满足了条件,就直接调用continue,如果这个判断条件一直都是满足的,那就会不停地continue,代码也就变成了以下形式。
线程在延时状态下是会把CPU交给其它线程的,避免不停地抢占CPU,以上代码虽然加了延时,但前面有一个判断操作,如果满足了条件,就直接调用continue,如果这个判断条件一直都是满足的,那就会不停地continue,代码也就变成了以下形式。
void run() { while (true) { continue; 等同于一个死循环,这样会大大影响程序的效率。 在每个continue前添加延时。 void run() { while (true) { if (...) { msleep(20); continue; ..... //operate msleep(20); 或者避免使用continue void run() { while (true) { if (...) { ..... //operate msleep(20); 4、优化数据查询方式 如果表中数据量大或者查询频率高,可以使用map容器来存放,以空间换时间,减少查询损耗。 5、通信协议的优化 可以通过优化通信协议来减少客户端和服务端的计算量。 6、减少不必要的IO操作 IO操作是比较耗时的,常见的IO有通信IO和文件IO,可以检查相关代码进行优化。 7、使用VS性能分析工具 https://blog.csdn.net/weixin_45001971/article/details/128419018 Qt是一个跨平台的C++图形用户界面应用程序开发框架。它具有丰富的功能和灵活的分层架构,可帮助开发人员高效地构建可扩展的软件应用程序。以上是Qt分层架构的使用和优化的一些建议,尽管使用分层架构需要耗费一些时间和精力,但最终它会为您节省时间和精力。 最近的项目用到了QT 5.5,项目在运行过程中出现了一段时间CPU占用率持续25%,并频繁断网的情况,遂决定对项目性能进行优化。 优化工具也是VS2010自带的性能分析工具,具体的使用方法参见:http://www.cnblogs.com/smark/archive/2011/10/12/2208039.html 其中可以选择“just my code”过滤出自己编写的代码。 通过性能分析工... 在最近的项目中,发现执行 Qt 程序时,有些情况下的 CPU 占用率奇高,最高高达 100%。项目跑在嵌入式板子上,最开始使用 EGLFS 插件,但是由于板子没有单独的鼠标层,导致鼠标移动起来卡顿,很不流畅,所以换成了 LinuxFB 插件。但是如果 CPU 占有率高了的话,也会导致鼠标卡顿,因为鼠标是由 Qt 应用程序层负责绘制的,如果应用程序 CPU 占有率高了的话,也会导致鼠标绘制缓慢,导致鼠标卡顿。 大家对于Qt诟病比较多的地方就是性能,尤其在嵌入式或者比较低端的平台上。所以在Qt4.5中,第一条设计理念就是提升Qt的运行时性能,内部项 目代号称之为Falcon – 猎鹰,目的就是想让Qt飞起来。:-) 其实性能优化在Qt4.5中,算是最最重要,最核心的改进了。为什么放在最后再说,是因为其中所包含的改进是在是太多了,也非常具体,很难简单的概 括。但是,从另一方面来说,对于Qt应用程序的开... Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智嵌入式系统 QNX、VxWorks 等等。一般来说Qt主要用于桌面程序开发和嵌入式开发。Qt性能优化!!这是一个非常适合中级... # 一、思维导图# 二、什么是性能优化?性能优化指在不影响系统运行正确性的前提下,使之运行得更快,完成特定功能所需的时间更短,或拥有更强大的服务能力。## 关注不同程序有不同的性能关... Qt 程序优化 编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行。编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高 //选择编译release模式,在pro文件根据优化的需要添加语句: QMAKE_CXXFLAGS_RELEASE += -O # Release -O QMAKE_CXXFLAGS_RELEASE += -... 1)Debug模式和Release模式处理不一样,因此可能出现Debug模式下没有问题,正式发布上线后就有问题 2)研发开发的时候为了方便可以用Debug模式,但给测试同学测试的时候一定要用Release模式,否则就可能出现上述问题 这是因为Release模式生成的代码会进行优化,比如while循环。 场景举例:使用一个bool变量控制线程暂停和继续来决定是否执行后面步骤 MyThread.cpp #include "mythread.h" MyThread::MyThread(QObject *paren 调试系统信息调用变量,默认在QT-OPTION-DEBUG-CDB PATH中。 删除从服务器更新命令 使用symchk 命令下载变量到本地,设置CDB PATH的变量为本地目录 更新命令:symchk /r c:\windows\system32 /s SRV*d:\symbolcache*http://msdl.microsoft.com/download/s...
void run() { while (true) { continue; 等同于一个死循环,这样会大大影响程序的效率。 在每个continue前添加延时。
等同于一个死循环,这样会大大影响程序的效率。
在每个continue前添加延时。
void run() { while (true) { if (...) { msleep(20); continue; ..... //operate msleep(20); 或者避免使用continue void run() { while (true) { if (...) { ..... //operate msleep(20); 4、优化数据查询方式 如果表中数据量大或者查询频率高,可以使用map容器来存放,以空间换时间,减少查询损耗。 5、通信协议的优化 可以通过优化通信协议来减少客户端和服务端的计算量。 6、减少不必要的IO操作 IO操作是比较耗时的,常见的IO有通信IO和文件IO,可以检查相关代码进行优化。 7、使用VS性能分析工具 https://blog.csdn.net/weixin_45001971/article/details/128419018 Qt是一个跨平台的C++图形用户界面应用程序开发框架。它具有丰富的功能和灵活的分层架构,可帮助开发人员高效地构建可扩展的软件应用程序。以上是Qt分层架构的使用和优化的一些建议,尽管使用分层架构需要耗费一些时间和精力,但最终它会为您节省时间和精力。 最近的项目用到了QT 5.5,项目在运行过程中出现了一段时间CPU占用率持续25%,并频繁断网的情况,遂决定对项目性能进行优化。 优化工具也是VS2010自带的性能分析工具,具体的使用方法参见:http://www.cnblogs.com/smark/archive/2011/10/12/2208039.html 其中可以选择“just my code”过滤出自己编写的代码。 通过性能分析工... 在最近的项目中,发现执行 Qt 程序时,有些情况下的 CPU 占用率奇高,最高高达 100%。项目跑在嵌入式板子上,最开始使用 EGLFS 插件,但是由于板子没有单独的鼠标层,导致鼠标移动起来卡顿,很不流畅,所以换成了 LinuxFB 插件。但是如果 CPU 占有率高了的话,也会导致鼠标卡顿,因为鼠标是由 Qt 应用程序层负责绘制的,如果应用程序 CPU 占有率高了的话,也会导致鼠标绘制缓慢,导致鼠标卡顿。 大家对于Qt诟病比较多的地方就是性能,尤其在嵌入式或者比较低端的平台上。所以在Qt4.5中,第一条设计理念就是提升Qt的运行时性能,内部项 目代号称之为Falcon – 猎鹰,目的就是想让Qt飞起来。:-) 其实性能优化在Qt4.5中,算是最最重要,最核心的改进了。为什么放在最后再说,是因为其中所包含的改进是在是太多了,也非常具体,很难简单的概 括。但是,从另一方面来说,对于Qt应用程序的开... Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智嵌入式系统 QNX、VxWorks 等等。一般来说Qt主要用于桌面程序开发和嵌入式开发。Qt性能优化!!这是一个非常适合中级... # 一、思维导图# 二、什么是性能优化?性能优化指在不影响系统运行正确性的前提下,使之运行得更快,完成特定功能所需的时间更短,或拥有更强大的服务能力。## 关注不同程序有不同的性能关... Qt 程序优化 编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行。编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高 //选择编译release模式,在pro文件根据优化的需要添加语句: QMAKE_CXXFLAGS_RELEASE += -O # Release -O QMAKE_CXXFLAGS_RELEASE += -... 1)Debug模式和Release模式处理不一样,因此可能出现Debug模式下没有问题,正式发布上线后就有问题 2)研发开发的时候为了方便可以用Debug模式,但给测试同学测试的时候一定要用Release模式,否则就可能出现上述问题 这是因为Release模式生成的代码会进行优化,比如while循环。 场景举例:使用一个bool变量控制线程暂停和继续来决定是否执行后面步骤 MyThread.cpp #include "mythread.h" MyThread::MyThread(QObject *paren 调试系统信息调用变量,默认在QT-OPTION-DEBUG-CDB PATH中。 删除从服务器更新命令 使用symchk 命令下载变量到本地,设置CDB PATH的变量为本地目录 更新命令:symchk /r c:\windows\system32 /s SRV*d:\symbolcache*http://msdl.microsoft.com/download/s...
void run() { while (true) { if (...) { msleep(20); continue; ..... //operate msleep(20); 或者避免使用continue
或者避免使用continue
void run() { while (true) { if (...) { ..... //operate msleep(20); 4、优化数据查询方式 如果表中数据量大或者查询频率高,可以使用map容器来存放,以空间换时间,减少查询损耗。 5、通信协议的优化 可以通过优化通信协议来减少客户端和服务端的计算量。 6、减少不必要的IO操作 IO操作是比较耗时的,常见的IO有通信IO和文件IO,可以检查相关代码进行优化。 7、使用VS性能分析工具 https://blog.csdn.net/weixin_45001971/article/details/128419018 Qt是一个跨平台的C++图形用户界面应用程序开发框架。它具有丰富的功能和灵活的分层架构,可帮助开发人员高效地构建可扩展的软件应用程序。以上是Qt分层架构的使用和优化的一些建议,尽管使用分层架构需要耗费一些时间和精力,但最终它会为您节省时间和精力。 最近的项目用到了QT 5.5,项目在运行过程中出现了一段时间CPU占用率持续25%,并频繁断网的情况,遂决定对项目性能进行优化。 优化工具也是VS2010自带的性能分析工具,具体的使用方法参见:http://www.cnblogs.com/smark/archive/2011/10/12/2208039.html 其中可以选择“just my code”过滤出自己编写的代码。 通过性能分析工... 在最近的项目中,发现执行 Qt 程序时,有些情况下的 CPU 占用率奇高,最高高达 100%。项目跑在嵌入式板子上,最开始使用 EGLFS 插件,但是由于板子没有单独的鼠标层,导致鼠标移动起来卡顿,很不流畅,所以换成了 LinuxFB 插件。但是如果 CPU 占有率高了的话,也会导致鼠标卡顿,因为鼠标是由 Qt 应用程序层负责绘制的,如果应用程序 CPU 占有率高了的话,也会导致鼠标绘制缓慢,导致鼠标卡顿。 大家对于Qt诟病比较多的地方就是性能,尤其在嵌入式或者比较低端的平台上。所以在Qt4.5中,第一条设计理念就是提升Qt的运行时性能,内部项 目代号称之为Falcon – 猎鹰,目的就是想让Qt飞起来。:-) 其实性能优化在Qt4.5中,算是最最重要,最核心的改进了。为什么放在最后再说,是因为其中所包含的改进是在是太多了,也非常具体,很难简单的概 括。但是,从另一方面来说,对于Qt应用程序的开... Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智嵌入式系统 QNX、VxWorks 等等。一般来说Qt主要用于桌面程序开发和嵌入式开发。Qt性能优化!!这是一个非常适合中级... # 一、思维导图# 二、什么是性能优化?性能优化指在不影响系统运行正确性的前提下,使之运行得更快,完成特定功能所需的时间更短,或拥有更强大的服务能力。## 关注不同程序有不同的性能关... Qt 程序优化 编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行。编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高 //选择编译release模式,在pro文件根据优化的需要添加语句: QMAKE_CXXFLAGS_RELEASE += -O # Release -O QMAKE_CXXFLAGS_RELEASE += -... 1)Debug模式和Release模式处理不一样,因此可能出现Debug模式下没有问题,正式发布上线后就有问题 2)研发开发的时候为了方便可以用Debug模式,但给测试同学测试的时候一定要用Release模式,否则就可能出现上述问题 这是因为Release模式生成的代码会进行优化,比如while循环。 场景举例:使用一个bool变量控制线程暂停和继续来决定是否执行后面步骤 MyThread.cpp #include "mythread.h" MyThread::MyThread(QObject *paren 调试系统信息调用变量,默认在QT-OPTION-DEBUG-CDB PATH中。 删除从服务器更新命令 使用symchk 命令下载变量到本地,设置CDB PATH的变量为本地目录 更新命令:symchk /r c:\windows\system32 /s SRV*d:\symbolcache*http://msdl.microsoft.com/download/s...
void run() { while (true) { if (...) { ..... //operate msleep(20);
4、优化数据查询方式 如果表中数据量大或者查询频率高,可以使用map容器来存放,以空间换时间,减少查询损耗。 5、通信协议的优化 可以通过优化通信协议来减少客户端和服务端的计算量。 6、减少不必要的IO操作 IO操作是比较耗时的,常见的IO有通信IO和文件IO,可以检查相关代码进行优化。 7、使用VS性能分析工具 https://blog.csdn.net/weixin_45001971/article/details/128419018 Qt是一个跨平台的C++图形用户界面应用程序开发框架。它具有丰富的功能和灵活的分层架构,可帮助开发人员高效地构建可扩展的软件应用程序。以上是Qt分层架构的使用和优化的一些建议,尽管使用分层架构需要耗费一些时间和精力,但最终它会为您节省时间和精力。 最近的项目用到了QT 5.5,项目在运行过程中出现了一段时间CPU占用率持续25%,并频繁断网的情况,遂决定对项目性能进行优化。 优化工具也是VS2010自带的性能分析工具,具体的使用方法参见:http://www.cnblogs.com/smark/archive/2011/10/12/2208039.html 其中可以选择“just my code”过滤出自己编写的代码。 通过性能分析工... 在最近的项目中,发现执行 Qt 程序时,有些情况下的 CPU 占用率奇高,最高高达 100%。项目跑在嵌入式板子上,最开始使用 EGLFS 插件,但是由于板子没有单独的鼠标层,导致鼠标移动起来卡顿,很不流畅,所以换成了 LinuxFB 插件。但是如果 CPU 占有率高了的话,也会导致鼠标卡顿,因为鼠标是由 Qt 应用程序层负责绘制的,如果应用程序 CPU 占有率高了的话,也会导致鼠标绘制缓慢,导致鼠标卡顿。 大家对于Qt诟病比较多的地方就是性能,尤其在嵌入式或者比较低端的平台上。所以在Qt4.5中,第一条设计理念就是提升Qt的运行时性能,内部项 目代号称之为Falcon – 猎鹰,目的就是想让Qt飞起来。:-) 其实性能优化在Qt4.5中,算是最最重要,最核心的改进了。为什么放在最后再说,是因为其中所包含的改进是在是太多了,也非常具体,很难简单的概 括。但是,从另一方面来说,对于Qt应用程序的开... Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智嵌入式系统 QNX、VxWorks 等等。一般来说Qt主要用于桌面程序开发和嵌入式开发。Qt性能优化!!这是一个非常适合中级... # 一、思维导图# 二、什么是性能优化?性能优化指在不影响系统运行正确性的前提下,使之运行得更快,完成特定功能所需的时间更短,或拥有更强大的服务能力。## 关注不同程序有不同的性能关... Qt 程序优化 编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行。编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高 //选择编译release模式,在pro文件根据优化的需要添加语句: QMAKE_CXXFLAGS_RELEASE += -O # Release -O QMAKE_CXXFLAGS_RELEASE += -... 1)Debug模式和Release模式处理不一样,因此可能出现Debug模式下没有问题,正式发布上线后就有问题 2)研发开发的时候为了方便可以用Debug模式,但给测试同学测试的时候一定要用Release模式,否则就可能出现上述问题 这是因为Release模式生成的代码会进行优化,比如while循环。 场景举例:使用一个bool变量控制线程暂停和继续来决定是否执行后面步骤 MyThread.cpp #include "mythread.h" MyThread::MyThread(QObject *paren 调试系统信息调用变量,默认在QT-OPTION-DEBUG-CDB PATH中。 删除从服务器更新命令 使用symchk 命令下载变量到本地,设置CDB PATH的变量为本地目录 更新命令:symchk /r c:\windows\system32 /s SRV*d:\symbolcache*http://msdl.microsoft.com/download/s...
如果表中数据量大或者查询频率高,可以使用map容器来存放,以空间换时间,减少查询损耗。
可以通过优化通信协议来减少客户端和服务端的计算量。
IO操作是比较耗时的,常见的IO有通信IO和文件IO,可以检查相关代码进行优化。
https://blog.csdn.net/weixin_45001971/article/details/128419018