首页 >>  正文

c++中优先级

来源:baiyundou.net   日期:2024-09-22

IT之家 8 月 7 日消息,腾讯 QQ 近期对桌面客户端进行了大刀阔斧的改革,三大系统平台都用上了全新 QQ NT 架构,基于 Electron 框架开发,因此也引来了用户关于“高内存占用、超大安装包、启动缓慢”等的担忧。

日前,QQ 技术团队在 InfoQ 平台发布了一篇介绍文章,分享了其在内存上进行专项优化的阶段性进展。

据介绍,新版 QQ 在内存上的挑战主要表现在以下 4 个方面:

  • 产品形态:由 1 个复杂的大面板(100+ 复杂程度不等的模块)和一系列独立功能窗口构成。窗口与渲染进程一一对应,窗口进程数很大程度影响 Electron 的内存占用。对于那个复杂的大面板,一旦没有精细控制就很容易导致内存持续走高。

▲ Electron 窗口多进程,图源  InfoQ
  • 使用习惯:用户长时间挂机。相比用完即走的 Web 页面,QQ 用户在一次登录后,可能会挂机一个月以上。这段期间,如果没有控制好 QQ 内存使用,那么结果可能是内存越占越大、用户交互响应变慢、甚至发生闪退。

  • 版本迭代:已经 24 岁的 QQ 拥有众多的功能和特性,过去一年团队一直做这件事:从核心特性开始快速补齐 Windows 版本的功能,同时也有一些高优先级的新功能要上。持续且快速的版本迭代,很可能产生新问题,使性能劣化。

  • 应用架构:新版 QQ 依赖一个 NT 核心数据模块(C++ addon),为 UI 提供本地化的数据服务。QQ 的加载体验能做到如此丝滑,这个模块起到了至关重要的作用。同时,与 NT 的联动优化,也需要拉通客户端 C++ 开发同学共同完成,当然,会存在一些沟通成本,但不可否认,能把内存占用压下来,客户端同学也付出了非常多的努力。

▲ 桌面端 QQ 整体架构,图源  InfoQ

对此,QQ 技术团队的工作主要包括以下几个方面:

  • 工具分析:首先,团队需要使用不同维度的内存分析工具,从 V8 引擎到进程,再到整个应用程序,打通整个链路进行多角度的细节分析,以此来定位内存使用的瓶颈。

  • 定向优化:在通过工具定位到问题之后,团队会采取一系列的针对性优化策略,包括缓存策略、按需加载、优雅降级等。

  • 线上监控:在本地或小范围内验证通过之后,团队需要广大用户的验证来确认优化措施是否适用于所有场景。然而,如何获取用户在 Windows 任务管理器中看到的内存使用量是一个挑战,团队已经做了大量的研究和验证。

  • 防止性能退化和自动化测试:为了保护辛苦得来的优化成果,并避免频繁的版本迭代影响 QQ 的内存目标,团队会借助开发框架、工具建设、代码审查等手段来预防性能退化。

QQ 技术团队表示,从结果或者解决问题的角度来看,经过一系列优化之后基本可以将 QQ 核心聊天场景的内存控制在 300M 以内,150M 的安装包大小,与旧版纯 Native QQ 差别较小。不单单内存占用,其他核心体验,比如切 AIO 的流畅度上要优于旧版 QQ。

据IT之家此前报道,腾讯已推出了 Windows QQ 9.9.1 以及 Mac QQ 6.9.18 版本更新,带来了多项优化和改进,后续预计还会有更多性能提升。

","gnid":"99e0e382cd25596f0","img_data":[{"flag":2,"img":[{"desc":"","height":"480","title":"","url":"https://p0.ssl.img.360kuai.com/t01d8942f70ab3760a4.jpg","width":"1090"},{"desc":"","height":"640","title":"","url":"https://p0.ssl.img.360kuai.com/t0197f8419d8aeee758.jpg","width":"1077"},{"desc":"","height":"718","title":"","url":"https://p0.ssl.img.360kuai.com/t019f11260df8c15033.jpg","width":"961"},{"desc":"","height":"857","title":"","url":"https://p0.ssl.img.360kuai.com/t01e30f87c04b53be37.jpg","width":"1220"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1691377187000,"pure":"","rawurl":"http://zm.news.so.com/95028af3cbd155e8075371ee92409c00","redirect":0,"rptid":"5d9747917e7775cf","rss_ext":[],"s":"t","src":"IT之家","tag":[{"clk":"ktechnology_1:ows","k":"ows","u":""},{"clk":"ktechnology_1:腾讯","k":"腾讯","u":""},{"clk":"ktechnology_1:内存","k":"内存","u":""}],"title":"腾讯 QQ 技术团队 NT 桌面版内存优化阶段进展公布

甄怕泄2780C语言中关于运算符的优先级问题,请进! -
祝复朗13516455048 ______ left to right 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级. 所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符,因此使 a = b = c = 6. 其次的关系运算符中;= %= &= ^= |= &lt,如下:...

甄怕泄2780c++题目 关于运算符的优先级 -
祝复朗13516455048 ______ %应该和乘除优先级一样的,那么先(int)(x+y)=(int)(7.2)=7, x+a%3*(int)(x+y)%2/4 =2.5+7%3*7%2/4 =2.5+1*7%2/4 =2.5+7%2/4; =2.5+1/4; =2.5

甄怕泄2780c++问题优先级 -
祝复朗13516455048 ______ 你说的是对的!我用这样一段代码实验了;int a=10,b=0; if(a++>10 && b++>=0) cout<<a<<'#'<<b<<endl; cout<<a<<'#'<<b<<endl; system("pause");//暂停往下执行 按下任意键继续 下面是显示结果;只有一个输出,说明IF语句里的输出没有执行,另外可以看到先执行a>10,结果为False,然后执行a++,就没有再执行 b++>=0,从输出0可见.

甄怕泄2780下列运算符中优先级最高的是( ) A.<= B.&& C.% D. += -
祝复朗13516455048 ______ 应该选C. 优先级从高到低依次是 算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符和逗号运算符.

甄怕泄2780c++中关于++, - - 等运算符优先级的运算 -
祝复朗13516455048 ______ 你的四个式子是在同一个程序中的且是依此的吧?若是,运算如下 i++与++i的区别:i++是先令i参加其它运算,然后再令i加1;而++i是先令i加1,然后再令i参加其它运算.--同++ 对(i++)+(++j):相当于2+4=6 上式运算完后i变为3,j变为4. ...

甄怕泄2780C++中运算符的优先级是怎么样的?
祝复朗13516455048 ______ 优先级 操作符 描述 示例 结合型 1 () [] -> . :: ++ -- Grouping operator Array access Member access from a pointer Member access from an object Scoping operator Post-increment Post-decrement (a + b) / 4; array[4] = 2; ptr->age = 34; obj.age = 34; ...

甄怕泄2780C++中操作符"|"和"||"是什么意思 -
祝复朗13516455048 ______ | 是“按位或”运算符 ||是“逻辑或”运算符 c++运算符如下: C++的优先级优先级 操作符 结合性 1 :: 左 2 . -> [] () 左 3 ++ -- ~ ! - + & * () sizeof new delete castname_cast<type> 单目操作符 右 4 .* ->* 左 5 * / % 左 6 + - 左 7 << >> 左 8 < <= > >= 左 9 == != 左 10 & 左 11 ^ 左 12 | 左 13 && 左 14 || 左 15 ?: 右 16 = *= /= %= += -= <<= >>= &= |= ^= 右 17 throw 左 18 , 左C的优先级

甄怕泄2780在C中++优先级高还是 - >优先级高 -
祝复朗13516455048 ______ () [] ->的优先级最高

甄怕泄2780C语言中强制类型转换运算符的优先级是? -
祝复朗13516455048 ______ 位于第二级,结合方式为自有向左. 比它优先级大的是最顶级优先级,包括:数组下标'[]'、函数调用操作符'()'、和各结构成员选择操作符'.' .

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024