Dela via


StartCountingOperation-åtgärd

Fullständigt kvalificerat namn: Std.Diagnostics.StartCountingOperation

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

Sammanfattning

Börjar räkna antalet gånger som den angivna åtgärden anropas. Misslyckas om åtgärden redan räknas.

Beskrivning

Med den här åtgärden kan du räkna antalet gånger en viss åtgärd anropas. Om den angivna åtgärden redan räknas ut utlöser anropet StartCountingOperation igen ett körningsfel. Inventeringen baseras på den specifika specialiseringen av den anropade åtgärden, så X och Adjoint X räknas separat. På samma sätt är Controlled X, CNOToch CX oberoende åtgärder som räknas separat, liksom Controlled X och Controlled Adjoint X.

Inmatning

Inlösbara

Åtgärden som ska räknas.

Anmärkningar

Att räkna åtgärdsanrop kräver särskild försiktighet i vilken åtgärd som skickas som indata. Till exempel räknar StartCountingOperation(H) bara antalet gånger H anropas, medan StartCountingOperation(Adjoint H) bara räknar antalet gånger Adjoint H anropas, även om H är självanslutning. Detta beror på hur körningen behandlar anropet av dessa åtgärder som distinkta med deras specialisering. På samma sätt räknar StartCountingOperation(Controlled X) bara antalet gånger Controlled X anropas, medan StartCountingOperation(CNOT) bara räknar antalet gånger CNOT anropas.

När lambdas räknas används symbolen som lambda är bunden till för att identifiera åtgärden och räknas som en separat åtgärd. Till exempel

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

Räknar specifikt anrop till myOp och inte H. Däremot räknar följande kod anrop till H sig själv:

let myOp = H;
StartCountingOperation(myOp);

Det beror på att den här koden inte definierar en lambda utan i stället bara skapar en bindning till H direkt.