Operação StartCountingOperation
Nome totalmente qualificado: Std.Diagnostics.StartCountingOperation
operation StartCountingOperation<'In, 'Out>(callable : ('In => 'Out)) : Unit
Resumo
Inicia a contagem do número de vezes que a operação determinada é chamada. Falhará se a operação já estiver sendo contada.
Descrição
Essa operação permite que você conte o número de vezes que uma determinada operação é chamada. Se a operação fornecida já estiver sendo contada, chamar StartCountingOperation
novamente disparará uma falha de runtime. A contagem baseia-se na especialização específica da operação invocada, portanto, 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
Callable
A operação a ser contada.
Observações
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 que H
é chamado, enquanto StartCountingOperation(Adjoint H)
contará apenas o número de vezes Adjoint H
é chamado, mesmo que H
seja auto-adjacente. Isso ocorre devido à forma como a execução trata a invocação dessas operações como distintas por sua especialização.
Da mesma forma, StartCountingOperation(Controlled X)
contará apenas o número de vezes que Controlled X
é chamado, enquanto StartCountingOperation(CNOT)
contará apenas o número de vezes CNOT
é chamado.
Ao contar lambdas, o símbolo ao qual o lambda é associado é 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
a si mesmo:
let myOp = H;
StartCountingOperation(myOp);
Isso ocorre porque esse código não define um lambda e, em vez disso, apenas cria uma associação para H
diretamente.