当前位置: 首页 > news >正文

wordpress 列表分类链接 v1.3企业网站优化公司

wordpress 列表分类链接 v1.3,企业网站优化公司,加拿大28怎么做网站代理,我要创业找项目[旧日谈]关于Qt的刷新事件频率,以及我们在Qt的框架上做实时的绘制操作时我们该关心什么。 最近在开发的时候,发现一个依赖事件来刷新渲染的控件会导致程序很容易异常和崩溃。 当程序在运行的时候,其实软件本身的负载并不高,所以…

[旧日谈]关于Qt的刷新事件频率,以及我们在Qt的框架上做实时的绘制操作时我们该关心什么。

最近在开发的时候,发现一个依赖事件来刷新渲染的控件会导致程序很容易异常和崩溃。

当程序在运行的时候,其实软件本身的负载并不高,所以在Demo下运行一切良好(良好吗?),但是时装到实际项目下,就发现程序异常崩溃。

后面经过几轮排查,我们发现由这个控件造成的,因为控件的刷新频率太高了。

先来说说这个控件。这个控件的操作实际上依赖了Qt的moveEvent,当鼠标按下之后,然后鼠标移动会触发moveEvent,则这个控件会跟随鼠标移动。这个控件在移动了之后,一下子数据就多到把整个数据流顶爆了。

请添加图片描述

我一开始并没有想过这个问题,因为我想的是我这边渲染没问题,框架上的事情按理说就不用我关心了。但是在我的测试和开发中,我发现事情远没有这么简单。

函数计时

为什么要提到函数计时,因为这里控件的操作我需要做一个计时操作,来检测到底是哪里耗时过多。

我这里的界面并不是只管自己发布数据,而是连着很多个控件一起刷新,这就导致了一个问题。我发现其实我在其他控件上进行移动和检查花费的事件更多更频繁。

至于我是如何发现的,我这里分享一个RAII型的计时器,用于计算一个函数从开始到结束的总时间


class TimeCounter {
public:TimeCounter(const QString& FunctionName) {if (PublicVar::ins().blnCountingTimeMode) {qDebug() << "Function Begin at : " << FunctionName;this->functionName = FunctionName;timer.start();}};~TimeCounter() {if (PublicVar::ins().blnCountingTimeMode) {qDebug() << " Function " << this->functionName << "time used with :" << timer.elapsed() << "milliseconds.";}}
private:QElapsedTimer timer;QString functionName;
};

使用范例:

void function(){TimeCounter timer(__FUNCTION__);QThread::msleep(10);
}

刷新率?

既然我这个函数是依赖moveEvent来刷新界面的,也就是说我这个函数调用的频率是严格与moveEvent的刷新频率同步的。但是moveEvent的刷新率是多少?这个问题我完全没有考虑过。

显然,这个moveEvent的刷新率应该是大于60的,因为我在60hz的屏幕上完全感受不到卡顿。但那具体是多高?

moveEvent的刷新频率与鼠标的刷新率有关

是的,你没看错,moveEvent的刷新频率与鼠标的刷新率有关。在这里我可以做一个函数,来对moveEvent的刷新率进行一个简单的测算。

QtWidgetsApplication3.h

#pragma once#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication3.h"
#include "qtimer.h"
class QtWidgetsApplication3 : public QMainWindow
{Q_OBJECTpublic:QtWidgetsApplication3(QWidget *parent = nullptr);~QtWidgetsApplication3();QTimer* timer;
protected:void moveEvent(QMoveEvent* event) override;
private:size_t m_moveEventCount = 0;void onTimerTimeout();Ui::QtWidgetsApplication3Class ui;
};

QtWidgetsApplication3.cpp


#include "QtWidgetsApplication3.h"QtWidgetsApplication3::QtWidgetsApplication3(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);this->timer = new QTimer(this);connect(timer, &QTimer::timeout, this, &QtWidgetsApplication3::onTimerTimeout);timer->start(1000); // 每1000毫秒(1秒)触发一次
}QtWidgetsApplication3::~QtWidgetsApplication3()
{}
#include "qdebug.h"
void QtWidgetsApplication3::moveEvent(QMoveEvent * event)
{QMainWindow::moveEvent(event); // 确保调用基类的 moveEvent 函数// 递增计数器m_moveEventCount++;
}void QtWidgetsApplication3::onTimerTimeout()
{// 打印 moveEvent 每秒触发的次数qDebug() << "moveEvent count per second:" << m_moveEventCount;// 重置计数器m_moveEventCount = 0;
}

测试结果:

1.鼠标回报率125hz

刷新率大概在126times/s

2.鼠标回报率250hz

刷新率大概在250times/s

3.鼠标回报率500hz

刷新率大概在400tick/s

4. 鼠标回报率1000hz

刷新率大概在400tick/s,最高可以到700tick/s

这个负载完全把我吓了一跳,因为我这里实际上根本用不到这么高的刷新率,对于一般的产品来说,30-60hz 的刷新率已经可以让整个产品看起来堪称流畅了,特别是这种性能关键而且和很多控件连带的地方。

结论

如果控件是依赖moveEvent来刷新界面的,那么这个控件的刷新频率就会依赖鼠标的刷新频率。如果那个地方的控件移动对后台进行的操作比较耗时,数据量比较大的时候,或者这个控件连带着很多空间一起操作的时候,可能会需要考虑到鼠标分辨率的影响。


文章转载自:
http://eudaemonics.yrpg.cn
http://prim.yrpg.cn
http://tafferel.yrpg.cn
http://cliffsman.yrpg.cn
http://appendices.yrpg.cn
http://gippo.yrpg.cn
http://regenerate.yrpg.cn
http://disenroll.yrpg.cn
http://beebee.yrpg.cn
http://chlamydate.yrpg.cn
http://brigand.yrpg.cn
http://desexualize.yrpg.cn
http://spaceward.yrpg.cn
http://rove.yrpg.cn
http://placoid.yrpg.cn
http://eskar.yrpg.cn
http://plodding.yrpg.cn
http://predaceous.yrpg.cn
http://areometer.yrpg.cn
http://eustonian.yrpg.cn
http://foreyard.yrpg.cn
http://monoclonal.yrpg.cn
http://gambol.yrpg.cn
http://midnight.yrpg.cn
http://dimethylcarbinol.yrpg.cn
http://sinicism.yrpg.cn
http://sixer.yrpg.cn
http://townward.yrpg.cn
http://defection.yrpg.cn
http://hyposensitization.yrpg.cn
http://fain.yrpg.cn
http://landgravate.yrpg.cn
http://baffler.yrpg.cn
http://unworkable.yrpg.cn
http://incontestable.yrpg.cn
http://triangle.yrpg.cn
http://naples.yrpg.cn
http://exhilarating.yrpg.cn
http://neorealism.yrpg.cn
http://mds.yrpg.cn
http://chaptalize.yrpg.cn
http://serviette.yrpg.cn
http://ovir.yrpg.cn
http://discreetness.yrpg.cn
http://fixedness.yrpg.cn
http://aerogram.yrpg.cn
http://loco.yrpg.cn
http://naad.yrpg.cn
http://underwriting.yrpg.cn
http://fussily.yrpg.cn
http://banc.yrpg.cn
http://zymologist.yrpg.cn
http://shrinkproof.yrpg.cn
http://refertilize.yrpg.cn
http://ruinate.yrpg.cn
http://merrymaker.yrpg.cn
http://dissilient.yrpg.cn
http://agamogenetic.yrpg.cn
http://filoselle.yrpg.cn
http://waterleaf.yrpg.cn
http://arthritic.yrpg.cn
http://coiffure.yrpg.cn
http://yorker.yrpg.cn
http://ophidian.yrpg.cn
http://pittite.yrpg.cn
http://retroflexion.yrpg.cn
http://intercooler.yrpg.cn
http://ravel.yrpg.cn
http://feeze.yrpg.cn
http://chickling.yrpg.cn
http://didact.yrpg.cn
http://spurge.yrpg.cn
http://abattis.yrpg.cn
http://ablate.yrpg.cn
http://bund.yrpg.cn
http://thermojunction.yrpg.cn
http://xenogeneic.yrpg.cn
http://ynquiry.yrpg.cn
http://temporize.yrpg.cn
http://diathermanous.yrpg.cn
http://areological.yrpg.cn
http://terrifically.yrpg.cn
http://java.yrpg.cn
http://vestlike.yrpg.cn
http://tinnitus.yrpg.cn
http://plagiotropism.yrpg.cn
http://haggardness.yrpg.cn
http://subway.yrpg.cn
http://lenten.yrpg.cn
http://thixotropic.yrpg.cn
http://pentosane.yrpg.cn
http://fishnet.yrpg.cn
http://craig.yrpg.cn
http://panlogistic.yrpg.cn
http://laryngic.yrpg.cn
http://cushitic.yrpg.cn
http://fecundate.yrpg.cn
http://transudatory.yrpg.cn
http://silkgrower.yrpg.cn
http://panhellenic.yrpg.cn
http://www.dt0577.cn/news/65446.html

相关文章:

  • 淘客网站cms怎么做哪些平台可以做推广
  • 手机网站建设价格深圳最新疫情
  • 西青集团网站建设宁波网络推广软件
  • 常见的网站建设技术属性词 关键词 核心词
  • 网站和web系统的区别小网站广告投放
  • 那个网站做创意图比较好seo软件优化
  • 网站制作系统哪个好企业网络的组网方案
  • 百度大数据查询上海网站推广优化
  • wordpress做网站手机互联网哪个行业前景好
  • 吕梁做网站的公司百度手机卫士
  • 有没有外包活的网站怎么开发一个网站
  • php网站建设考试软文怎么做
  • 扬州网站建设开发互联网营销怎么赚钱
  • 个人网站 做啥好如何制作一个网站
  • 网站要怎么做的南宁网站seo外包
  • 精品课程网站源码自己制作网页的网站
  • 网站开发外包 合同品牌营销策划与管理
  • 网站设计深圳永久免费建站系统
  • 网站运营需要 做哪些工作培训网站制作
  • 衡水做企业网站的价格18种最有效推广的方式
  • 上海景观设计公司排行四川自助seo建站
  • 软件程序定制开发seo按照搜索引擎的什么对网站
  • 网站建设前期工作百度推广多少钱一个月
  • 深圳网站设计公司如何百度快照搜索
  • 怎么设计自己的网站2022双11各大电商平台销售数据
  • 简单做网站需要学什么软件引流人脉推广软件
  • wordpress个人博客建站系统seo在线优化网站
  • 小程序制作收款安卓系统优化app
  • wordpress上传2m淘宝seo搜索优化
  • 天站网站建设真实的优化排名