次の方法で共有


StartCountingOperation 操作

完全修飾名: Std.Diagnostics.StartCountingOperation

operation StartCountingOperation<'In, 'Out>(callable : ('In => 'Out)) : Unit

概要

指定された操作が呼び出された回数のカウントを開始します。 操作が既にカウントされている場合は失敗します。

形容

この操作を使用すると、特定の操作が呼び出された回数をカウントできます。 指定された操作が既にカウントされている場合、StartCountingOperation を再度呼び出すと、ランタイム エラーがトリガーされます。 カウントは呼び出された操作の特定の特殊化に基づいているため、XAdjoint X は個別にカウントされます。 同様に、Controlled XCNOT、および CX は、Controlled XControlled Adjoint Xと同様に、個別にカウントされる独立した操作です。

インプット

呼び出し

カウントする操作。

備考

操作呼び出しをカウントするには、入力として渡される操作に特定の注意が必要です。 たとえば、StartCountingOperation(H)H が呼び出された回数のみをカウントし、StartCountingOperation(Adjoint H) は自己隣接 H 場合でも、Adjoint H が呼び出された回数のみをカウントします。 これは、これらの操作の呼び出しが特殊化によって個別に処理されるためです。 同様に、StartCountingOperation(Controlled X)Controlled X が呼び出された回数のみをカウントし、StartCountingOperation(CNOT)CNOT が呼び出された回数のみをカウントします。

ラムダをカウントする場合、ラムダがバインドされているシンボルが操作を識別するために使用され、別の操作としてカウントされます。 例えば

let myOp = q => H(q);
StartCountingOperation(myOp);

Hではなく、myOp の呼び出しを具体的にカウントします。 これに対し、次のコードでは、H 自体への呼び出しがカウントされます。

let myOp = H;
StartCountingOperation(myOp);

これは、このコードはラムダを定義せず、代わりに H へのバインドを直接作成するためです。