Partilhar via


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, CNOTe 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.