Operazione StartCountingOperation
Nome completo: Std.Diagnostics.StartCountingOperation
operation StartCountingOperation<'In, 'Out>(callable : ('In => 'Out)) : Unit
Sommario
Inizia a contare il numero di chiamate all'operazione specificata. Ha esito negativo se l'operazione è già in corso di conteggio.
Descrizione
Questa operazione consente di contare il numero di chiamate di una determinata operazione. Se l'operazione specificata è già in corso di conteggio, la chiamata StartCountingOperation
di nuovo attiverà un errore di runtime. Il conteggio si basa sulla specializzazione specifica dell'operazione richiamata, quindi X
e Adjoint X
vengono conteggiati separatamente.
Analogamente, Controlled X
, CNOT
e CX
sono operazioni indipendenti che vengono conteggiate separatamente, come sono Controlled X
e Controlled Adjoint X
.
Immissione
Callable
Operazione da contare.
Osservazioni
Il conteggio delle chiamate all'operazione richiede una particolare attenzione per l'operazione passata come input. Ad esempio, StartCountingOperation(H)
conteggierà solo il numero di chiamate H
, mentre StartCountingOperation(Adjoint H)
conteggierà solo il numero di chiamate Adjoint H
, anche se H
è adiacente. Ciò è dovuto al modo in cui l'esecuzione considera la chiamata di queste operazioni come distinte dalla loro specializzazione.
Allo stesso modo, StartCountingOperation(Controlled X)
conteggierà solo il numero di chiamate Controlled X
, mentre StartCountingOperation(CNOT)
conteggierà solo il numero di chiamate CNOT
.
Durante il conteggio delle espressioni lambda, il simbolo a cui è associata l'espressione lambda viene usato per identificare l'operazione e viene conteggiato come operazione separata. Per esempio
let myOp = q => H(q);
StartCountingOperation(myOp);
Verranno conteggiati in modo specifico le chiamate a myOp
e non H
. Al contrario, il codice seguente conta le chiamate a H
stessa:
let myOp = H;
StartCountingOperation(myOp);
Questo perché questo codice non definisce un'espressione lambda e crea semplicemente un'associazione per H
direttamente.