Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >优化成员变量访问

优化成员变量访问
EN

Stack Overflow用户
提问于 2017-03-20 00:30:58
回答 3查看 78关注 0票数 0

允许C++编译器将下面的循环优化为无限循环

代码语言:javascript
运行
AI代码解释
复制
this->m_stop=0;
while(!this->m_stop)
    {
//  do stuff
    }

即使在单线程上下文中,这个问题也是相关的,因为循环中的调用可能间接地影响状态标志。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-20 01:10:52

如果没有可能使循环的主体能够合法地更改m_stop,那么这是一个允许的优化。

如果编译器不能在循环中看到函数的内容,那么它必须假定它们可以更改m_stop

如果指向m_stop*this的指针或引用存储在运行在循环主体中的代码可访问的某个地方,那么编译器必须进行更广泛的分析,以确定假定m_stop不发生更改是否安全。如果它不能进行此分析,则必须假定如果循环的主体更改了任何可能引用m_stop的内容,则必须假定m_stop可能发生更改。

票数 1
EN

Stack Overflow用户

发布于 2017-03-20 01:05:32

编译器只能执行不影响结构良好的程序的可观察行为的优化。这通常被称为as-if规则;如果程序是由符合标准的抽象机器执行的,则程序必须按照--执行的方式运行,但只要程序以相同的方式运行,实现可能会更改执行的内容,使其运行得更快。

因此,编译器无法将代码优化为无限循环,除非它能够证明它不影响程序的可观察行为。当然,如果你在某个地方有未定义的行为,那么所有的赌注都取消了。

票数 1
EN

Stack Overflow用户

发布于 2017-03-20 00:33:48

如果this->m_stop是非易失性的,并且编译器可以知道this->m_stop的值不会改变它的值(即条件始终为真)。

也许它可以(在某些情况下)知道,即使this->m_stop是不稳定的,条件仍然是正确的。但是,这个场景仍然意味着它仍然必须对循环中的每个迭代至少计算至少this->m_stop (即使它知道结果将是0)。通常,编译器不会知道这一点。

此外,如果编译器能够知道在循环的每个开始时,this->m_stop值都是0值,那么修改它值的情况也是可能的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42898876

复制
相关文章
今天的主角,VFP新报表设计器 TQ报表设计器
2018年,我在某软件公司任职时,负责搭建一个新的开发框架。在原有的系统中,所有的报表打印都是使用 80 引擎,鉴于 90 引擎的优异特性,以及考虑到今后可能的报表需求,我在其中引入了 90 引擎。但是,结果是我又屏蔽掉了 90 引擎的使用。
加菲猫的VFP
2023/08/21
4430
今天的主角,VFP新报表设计器 TQ报表设计器
[财务][数据化分析][帆软]报表设计-普通报表设计
普通报表设计可以分为报表设计、参数设计、图表设计和填报设计四个部分,这四个部分是 FineReport 普通模板的几大使用方式。
landv
2020/05/25
2.6K0
[财务][数据化分析][帆软]报表设计-普通报表设计
如何实现报表设计中的高精度报表套打?
在许多行业中票据具有严格的行业规范,格式是无法修改的,一旦格式有所改动,票据数据就会失效无效。因此通常情况下,我们会在预先设计好格式的报表的打印版中,手动填写数据信息,如常见的各类账本,报销单等填写数据。
葡萄城控件
2022/05/09
1.4K0
如何实现报表设计中的高精度报表套打?
[财务][数据化分析][帆软]报表设计-聚合报表设计
聚合报表指一个报表中包含多个模块,每一块都类似一张单独的报表或者一张图表,块与块之间相对独立,互不影响。
landv
2020/05/25
2.7K0
[财务][数据化分析][帆软]报表设计-聚合报表设计
[财务][数据化分析][帆软]报表设计-决策报表设计模式
 就我而言,不建议使用这个FineReport里面的决策报表,还是用FineBI里面的决策报表好用,阔以在web端进行设计,其实都一样。
landv
2020/05/25
2.7K0
[财务][数据化分析][帆软]报表设计-决策报表设计模式
[报表篇]-Ureport报表设计器-基础组件配置
​ Ureport2 报表设计器是一个基于 WEB 的在线报表设计器,其具有良好的界面设计和强大的报表设计功能,支持报表多种格式导出(分页)、报表通用性设计等,Ureport2 支持简单、复杂报表的设计,能够很好地嵌合实际业务需求,其报表设计可通过纯 sql 或者是配置的方式实现,以此可针对不同的人员进行管理。
hahah
2022/08/30
5K0
动态生成RDLC报表
1、从DataGrid提取(包括最新的增删改)数据,自动生成对应的RDLC报表文件(以流的形式驻存在内存中),用ReportViewer类来展示、打印、排版、预览、分页
NaughtyCat
2020/10/09
8.5K0
动态生成RDLC报表
如何设计报表?
报表就是报告状况的表,是通过表格、图表来展示指标,从而方便业务部门掌握业务的情况。
猴子数据分析
2020/11/18
9070
[财务][数据化分析][帆软]报表设计-设计思路
使用 FineReport 设计器设计模板,首先需要了解 FineReport 模板制作的思路,沿着其思路来了解 FineReport 报表中的所有功能。
landv
2020/05/25
1.8K0
[财务][数据化分析][帆软]报表设计-设计思路
[财务][数据化分析][帆软]报表设计-模板设计类型
模板设计是 FineReport 学习过程中的主要难题所在,FineReport 模板设计主要包括普通模板设计、决策报表设计和聚合报表设计三种模板设计类型。
landv
2020/05/25
1.1K0
[财务][数据化分析][帆软]报表设计-模板设计类型
如何设计报表?
报表就是报告状况的表,是通过表格、图表来展示指标,从而方便业务部门掌握业务的情况。
猴子数据分析
2021/05/16
8490
Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库。
Hongten
2018/09/13
1.8K0
Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
在Silverlight中动态绑定页面报表(PageReport)的数据源
ActiveReports 7中引入了一种新的报表模型——PageReport(页面布局报表),这种报表模型又细分了两种具体显示形式: o    固定页面布局报表模型(FPL)是ActiveReports 7中首创的一种 .NET报表模型,通过这种模型可以非常方便地设计出拥有复杂格式的报表模板。您只需定义好页面大小,然后以一种可视化的方式添加需要的控件并设置数据填充方式,剩下的工作将由报表引擎自动完成。 o    连续页面布局报表模型(CPL)主要通过数据区域来控制报表的布局,并能自动实现数
葡萄城控件
2018/01/10
2K0
在Silverlight中动态绑定页面报表(PageReport)的数据源
数据库中内连接、外连接、全连接
转自:http://blog.csdn.net/yilip/article/details/8065840
forrestlin
2022/04/02
4.6K0
[财务][数据化分析][帆软]报表设计-分页预览
分页预览即普通预览模式,FineReport 的默认预览方式,一般在只需要查看报表数据用于分析的时候使用。
landv
2020/05/25
2.5K0
[财务][数据化分析][帆软]报表设计-分页预览
stimulsoft oracle,报表仪表设计器Stimulsoft的处理数据功能
Stimulsoft Reports.Net是一个基于.NET框架的报表生成器,能够帮助你创建结构、功能丰富的报表。StimulReport.Net的报表设计器不仅界面友好,而且使用便捷,能够让你轻松创建所有报表;该报表设计器在报表设计过程中以及报表运行的过程中都可以使用。在运行时使用StimulReport.Net 的报表设计器不需要支付任何的专利费用。
全栈程序员站长
2022/09/14
1.1K0
可动态扩展的数据库模型设计
在通常的数据库设计中,我们定义了每个实体有多少个属性,每个属性的数据类型是什么,有多长,是否允许为空,有什么约束条件等,这些定义是完全静态的,系统创建时就全部定义好,不能动态修改。但是对于实体的属性变化很快,或者实体和属性由用户在系统中自行定义的情况下,那么就需要一个可以动态扩展的数据库模型,以保存各种动态产生的数据。
深蓝studyzy
2022/06/16
1.4K0
可动态扩展的数据库模型设计
[财务][数据化分析][帆软]报表设计-填报预览
填报预览,顾名思义,就是指在 Web 端预览用来填报数据的模板,一般在只需要录入修改数据的时候使用,当然也可用来查看数据。
landv
2020/05/31
1.6K0
[财务][数据化分析][帆软]报表设计-模板预览
模板预览就是指在 Web 端查看模板效果,FineReport 提供了多种不同的预览方式,来满足用户的多样化需求。
landv
2020/05/25
1.6K0
[财务][数据化分析][帆软]报表设计-模板预览
[财务][数据化分析][帆软]报表设计-第一张报表
今天说一下帆软的弊端,优势什么的请自己去发现,使用了这么久帆软了,唯一感觉的是赶紧找一台服务器安装上,本机跑太消耗内存了。
landv
2020/05/25
2.9K0
[财务][数据化分析][帆软]报表设计-第一张报表

相似问题

如何在宾得报表设计器中创建动态SQL?

11

无法将宾得报表设计器与MySQL数据库连接

15

使用宾得报表设计器打印报表时缺少页

17

为什么宾得报告设计器在报表的数据库连接中添加名为"ce“的参数?

24

宾得报告设计器批量更改子报表中的文件位置

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档