【发布时间】:2019-04-05 15:46:25
【问题描述】:
我有一个library,它在编译时执行大量循环展开。我还使用了一个基准测试工具,它通过在范围内实例化一个结构来工作,并在销毁时测量创建和销毁之间的时间并返回收集的值。现在,通过在其中插入一些函数调用,它可以测量函数调用的时间。我想知道的是,编译器可以跳转范围吗?(请参阅下面的代码)
PerfEvent ev;
{
PerfEventBlock bl(ev, countPE);
ev.setParam("name","FTensor3D");
res(l,m,n,o) = t1(l,m,k)*t2(k,n,o);
}
或者换句话说:编译器可以“外包”到范围之外(我得到了奇怪的结果,我想知道)
【问题讨论】:
-
您能否澄清您的意思,并告诉我们minimal reproducible example到底出了什么问题。
-
如果您得到奇怪的结果,您应该发布minimal reproducible example,我们可以告诉您原因。以这种形式向他们提问过于宽泛,您会得到如下一般性的答案。
-
为什么不直接看生成的代码?
-
@CleboSevic 你太个人化了。除了您确实让 cmets 如何改进您的问题这一事实之外,downvote 按钮本身表明它适用于 unclear 问题。我不能否认,虽然我有点明白你想要什么的要点(这就是为什么我没有被否决投票),但这只是模糊的措辞。 “外包”和“跳转范围”没有特别的含义,而您的意思可能是“在范围之外运行构造函数/析构函数”。
标签: c++ scope compiler-optimization