Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Plně kvalifikovaný název: Std.Diagnostics.StartCountingOperation
operation StartCountingOperation<'In, 'Out>(callable : ('In => 'Out)) : Unit
Shrnutí
Začne spočítat, kolikrát se daná operace volá. Selže, pokud se operace už počítá.
Popis
Tato operace umožňuje spočítat, kolikrát se daná operace volá. Pokud se daná operace už počítá, volání StartCountingOperation znovu aktivuje selhání modulu runtime. Počítání vychází z konkrétní specializace vyvolané operace, takže X a Adjoint X se počítají samostatně.
Stejně tak Controlled X, CNOTa CX jsou nezávislé operace, které se počítají samostatně, stejně jako Controlled X a Controlled Adjoint X.
Vstup
vypověditelný
Operace, která se má spočítat.
Poznámky
Počítání volání operací vyžaduje zvláštní péči o to, jaká operace se předává jako vstup. Například StartCountingOperation(H) spočítá jenom počet, kolikrát se H volá, zatímco StartCountingOperation(Adjoint H) bude počítat pouze počet, kolikrát se Adjoint H volá, i když H je samostatné. Důvodem je způsob, jakým provádění zpracovává vyvolání těchto operací jako odlišné podle jejich specializace.
Stejným způsobem bude StartCountingOperation(Controlled X) počítat pouze počet, kolikrát se volá Controlled X, zatímco StartCountingOperation(CNOT) bude počítat pouze počet, kolikrát se volá CNOT.
Při počítání lambda se symbol, ke které je lambda vázán, používá k identifikaci operace a počítá se jako samostatná operace. Například
let myOp = q => H(q);
StartCountingOperation(myOp);
Bude počítat konkrétně volání myOp a nikoli H. Naproti tomu následující kód spočítá volání H sám:
let myOp = H;
StartCountingOperation(myOp);
Důvodem je to, že tento kód nedefinuje lambda a místo toho vytvoří vazbu na H přímo.