Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.