as-if相关内容
正如标题所说: 究竟什么是“as-if"规则? 一个典型的答案是: 允许任何和所有不改变程序可观察行为的代码转换的规则 有时,我们会不断从某些实现中获取行为,这些行为归因于该规则.多次出错. 那么,这条规则到底是什么?标准并没有明确将这条规则作为一个部分或段落提及,那么究竟什么属于该规则的范围? 对我来说,这似乎是一个标准没有详细定义的灰色区域.有人可以详细说明
..
是否可能有一个执行时间为零的循环?我认为即使是空循环也应该有一个执行时间,因为有一个与之相关的开销. 解决方案 是的,在 as-if 规则下,编译器只负责模拟代码的可观察行为,所以如果你有一个没有任何可观察行为的循环,那么它可以被完全优化掉,因此将有效地实现零执行时间. 示例 例如以下代码: int main(){整数 j = 0 ;for( int i = 0; i 使
..
正如标题所说: 究竟什么是“as-if"?规则? 人们会得到的典型答案是: 允许任何和所有不改变程序可观察行为的代码转换的规则 有时,我们会不断从某些实现中获取行为,这归因于此规则.很多次都错了. 那么,这条规则到底是什么?标准中并没有明确将这条规则作为章节或段落提及,那么这条规则的范围究竟是什么? 对我来说,这似乎是一个标准没有详细定义的灰色区域.有人可以详细
..
经过一番Google搜索(例如, site:eel.is是“好像规则" ),我找不到合适的位置来清楚地陈述所谓的“好像"规则在C ++标准中.我所能找到的就是在标准中调用它的那些地方,给出了 intro.execution 参考. 但是 intro.execution 似乎没有明确引用此规则的任何一般形式.我可能在这里缺少一些细微的东西,但是您能指出我对传达规则有精确的规范理解的地方吗?也许
..
关于“按原样"的问题,有一个很大的疑问.规则,但是我想知道在测量时间方面是否有例外情况. 考虑一下(取自此处稍作修改): 使用std :: chrono;自动开始= stable_clock :: now();自动结果= some_lengthy_calculation(some_params);自动结束= std :: chrono :: steady_clock :: now();st
..
在cppreference.com上std::memory_order的文档中,有轻松订购的示例: 轻松订购 标记为memory_order_relaxed的原子操作不是同步操作;它们不会在并发内存访问之间强加顺序.它们仅保证原子性和修改顺序的一致性. 例如,x和y最初为零, // Thread 1: r1 = y.load(std::memory_order_relaxe
..
是否有可能有一个环具有零执行时间?我会认为,既然有一个与之关联的开销,即使是空的循环应该有一个执行时间。 解决方案 是的,下的 AS-if规则的编译器只有义务效仿code的观察行为,所以如果你有一个循环,没有任何可观察到的行为,那么它完全可以被优化掉,因此将有效地具有零的执行时间。 例子 例如下面的code: INT的main() { INT J = 0; 的for(int
..