Compartir a través de


Operación StartCountingOperation

Nombre completo: Std.Diagnostics.StartCountingOperation

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

Resumen

Comienza a contar el número de veces que se llama a la operación especificada. Se produce un error si la operación ya se está contando.

Descripción

Esta operación permite contar el número de veces que se llama a una operación determinada. Si la operación dada ya se está contando, llamar a StartCountingOperation de nuevo desencadenará un error en tiempo de ejecución. El recuento se basa en la especialización específica de la operación invocada, por lo que X y Adjoint X se cuentan por separado. Del mismo modo, Controlled X, CNOTy CX son operaciones independientes que se cuentan por separado, tal como se Controlled X y Controlled Adjoint X.

Entrada

Accesible

Operación que se va a contar.

Observaciones

El recuento de llamadas de operación requiere atención específica en qué operación se pasa como entrada. Por ejemplo, StartCountingOperation(H) contará solo el número de veces que se llama a H, mientras que StartCountingOperation(Adjoint H) contará solo el número de veces que se llama a Adjoint H, aunque H sea autocontigua. Esto se debe a cómo la ejecución trata la invocación de estas operaciones como distinta por su especialización. De la misma manera, StartCountingOperation(Controlled X) contará solo el número de veces que se llama a Controlled X, mientras que StartCountingOperation(CNOT) contará solo el número de veces que se llama a CNOT.

Al contar lambdas, el símbolo al que se enlaza la expresión lambda se usa para identificar la operación y se cuenta como una operación independiente. Por ejemplo

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

Contará específicamente llamadas a myOp y no a H. Por el contrario, el código siguiente contará las llamadas a H en sí:

let myOp = H;
StartCountingOperation(myOp);

Esto se debe a que este código no define una expresión lambda y, en su lugar, simplemente crea un enlace para H directamente.