StartCountingOperation
Nome totalmente qualificado: Std.Diagnostics.StartCountingOperation
operation StartCountingOperation<'In, 'Out>(callable : ('In => 'Out)) : Unit
Resumo
Começa a contar o número de vezes que determinada operação é chamada. Falha se a operação já estiver sendo contada.
Descrição
Esta operação permite que você conte o número de vezes que uma determinada operação é chamada. Se a operação dada já estiver sendo contada, chamáStartCountingOperation
novamente acionará uma falha de tempo de execução. A contagem é baseada na especialização específica da operação invocada, de modo que X
e Adjoint X
são contados separadamente.
Da mesma forma, Controlled X
, CNOT
e CX
são operações independentes que são contadas separadamente, assim como Controlled X
e Controlled Adjoint X
.
Entrada
exigível
A operação a ser contada.
Comentários
A contagem de chamadas de operação requer cuidados específicos em qual operação é passada como entrada. Por exemplo, StartCountingOperation(H)
contará apenas o número de vezes H
é chamado, enquanto StartCountingOperation(Adjoint H)
contará apenas o número de vezes Adjoint H
é chamado, mesmo que H
seja autoadjunto. Isso se deve à forma como a execução trata a invocação dessas operações como distinta por sua especialização.
Da mesma forma, StartCountingOperation(Controlled X)
contará apenas o número de vezes Controlled X
é chamado, enquanto StartCountingOperation(CNOT)
contará apenas o número de vezes CNOT
é chamado.
Ao contar lambdas, o símbolo ao qual a lambda está ligada é usado para identificar a operação e é contado como uma operação separada. Por exemplo
let myOp = q => H(q);
StartCountingOperation(myOp);
Contará especificamente chamadas para myOp
e não H
. Por outro lado, o código a seguir contará chamadas para H
si:
let myOp = H;
StartCountingOperation(myOp);
Isso ocorre porque esse código não define um lambda e, em vez disso, apenas cria uma ligação para H
diretamente.