完全限定的名称:Std.Diagnostics.StartCountingOperation
operation StartCountingOperation<'In, 'Out>(callable : ('In => 'Out)) : Unit
总结
开始计算调用给定操作的次数。 如果操作已计数,则失败。
描述
此操作允许对调用给定操作的次数进行计数。 如果已对给定操作进行计数,则再次调用 StartCountingOperation 将触发运行时失败。 计数基于调用的操作的特定专用化,因此单独对 X 和 Adjoint X 进行计数。
同样,Controlled X、CNOT和 CX 是单独计数的独立操作,如 Controlled X 和 Controlled Adjoint X。
输入
调用
要计数的操作。
言论
对操作调用进行计数需要具体处理作为输入传递的操作。 例如,StartCountingOperation(H) 将仅计算调用 H 的次数,而 StartCountingOperation(Adjoint H) 将仅计算调用 Adjoint H 的次数,即使 H 是自我相邻的。 这是因为执行将这些操作的调用视为不同的专用化。
同样,StartCountingOperation(Controlled X) 将仅计算调用 Controlled X 的次数,而 StartCountingOperation(CNOT) 将仅计算调用 CNOT 的次数。
对 lambda 进行计数时,lambda 绑定到的符号用于标识操作,并将其计为单独的操作。 例如
let myOp = q => H(q);
StartCountingOperation(myOp);
将专门统计对 myOp 的调用,而不是 H。 相比之下,以下代码将计算对 H 本身的调用:
let myOp = H;
StartCountingOperation(myOp);
这是因为此代码不定义 lambda,而是直接创建一个绑定来 H。