Freigeben über


StartCountingOperation-Vorgang

Vollqualifizierter Name: Std.Diagnostics.StartCountingOperation

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

Zusammenfassung

Beginnt mit der Zählung, wie oft der angegebene Vorgang aufgerufen wird. Schlägt fehl, wenn der Vorgang bereits gezählt wird.

Beschreibung

Mit diesem Vorgang können Sie zählen, wie oft ein bestimmter Vorgang aufgerufen wird. Wenn der angegebene Vorgang bereits gezählt wird, löst der Aufruf StartCountingOperation erneut einen Laufzeitfehler aus. Die Zählung basiert auf der spezifischen Spezialisierung des aufgerufenen Vorgangs, sodass X und Adjoint X separat gezählt werden. Ebenso Controlled X, CNOTund CX sind unabhängige Vorgänge, die separat gezählt werden, wie Controlled X und Controlled Adjoint X.

Eingabe

aufrufbar

Der zu zählende Vorgang.

Bemerkungen

Das Zählen von Vorgangsaufrufen erfordert eine bestimmte Sorgfalt bei der Übergabe des Vorgangs als Eingabe. Beispielsweise zählt StartCountingOperation(H) nur die Häufigkeit, mit der H aufgerufen wird, während StartCountingOperation(Adjoint H) nur die Anzahl der Aufrufe Adjoint H zählt, obwohl H selbst angrenzende Ist. Dies liegt daran, wie die Ausführung den Aufruf dieser Vorgänge durch ihre Spezialisierung unterscheidet. Auf die gleiche Weise zählt StartCountingOperation(Controlled X) nur die Anzahl der Aufrufe Controlled X, während StartCountingOperation(CNOT) nur die Anzahl der Aufrufe CNOT zählen.

Beim Zählen von Lambdas wird das Symbol, an das die Lambda-Funktion gebunden ist, verwendet, um den Vorgang zu identifizieren und als separate Operation zu zählen. Zum Beispiel

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

Zählt insbesondere Anrufe an myOp und nicht an H. Im Gegensatz dazu zählt der folgende Code Aufrufe von H selbst:

let myOp = H;
StartCountingOperation(myOp);

Dies liegt daran, dass dieser Code keine Lambda-Funktion definiert und stattdessen nur eine Bindung an H direkt erstellt.