Udostępnij przez


Operacja StartCountingOperation

W pełni kwalifikowana nazwa: Std.Diagnostics.StartCountingOperation

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

Streszczenie

Rozpoczyna zliczanie liczby wywołań danej operacji. Kończy się niepowodzeniem, jeśli operacja jest już liczone.

Opis

Ta operacja umożliwia zliczenie liczby wywołań danej operacji. Jeśli dana operacja jest już zliczana, wywołanie metody StartCountingOperation spowoduje wyzwolenie błędu środowiska uruchomieniowego. Liczenie jest oparte na określonej specjalizacji wywoływanej operacji, więc X i Adjoint X są liczone oddzielnie. Podobnie Controlled X, CNOTi CX są niezależnymi operacjami, które są liczone oddzielnie, podobnie jak Controlled X i Controlled Adjoint X.

Wkład

Nieopłacona

Operacja do zliczenia.

Uwagi

Wywołania operacji zliczania wymagają określonej staranności w tym, jaka operacja jest przekazywana jako dane wejściowe. Na przykład StartCountingOperation(H) będzie liczyć tylko liczbę wywołań H, podczas gdy StartCountingOperation(Adjoint H) będzie liczyć tylko liczbę wywołań Adjoint H, mimo że H jest samozadowolenie. Wynika to z tego, jak wykonanie traktuje wywołanie tych operacji jako odrębne od ich specjalizacji. W ten sam sposób StartCountingOperation(Controlled X) będzie liczyć tylko liczbę wywołań Controlled X, podczas gdy StartCountingOperation(CNOT) będzie liczyć tylko liczbę wywołań CNOT.

Podczas liczenia lambda symbol, do którego jest powiązana lambda, służy do identyfikowania operacji i jest on liczony jako oddzielna operacja. Na przykład

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

Zlicza wywołania do myOp, a nie H. Natomiast następujący kod zlicza wywołania do samego H:

let myOp = H;
StartCountingOperation(myOp);

Jest to spowodowane tym, że ten kod nie definiuje wyrażenia lambda, a zamiast tego tworzy powiązanie bezpośrednio z H.