Partager via


Opération StartCountingOperation

Nom complet : Std.Diagnostics.StartCountingOperation

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

Résumé

Commence à compter le nombre de fois où l’opération donnée est appelée. Échoue si l’opération est déjà comptée.

Description

Cette opération vous permet de compter le nombre de fois où une opération donnée est appelée. Si l’opération donnée est déjà comptée, l’appel de StartCountingOperation déclenche une défaillance d’exécution. Le comptage est basé sur la spécialisation spécifique de l’opération appelée. Par conséquent, X et Adjoint X sont comptabilisés séparément. De même, Controlled X, CNOTet CX sont des opérations indépendantes qui sont comptabilisées séparément, comme Controlled X et Controlled Adjoint X.

Entrée

joignable

Opération à compter.

Remarques

Le comptage des appels d’opération nécessite des soins spécifiques dans l’opération passée en tant qu’entrée. Par exemple, StartCountingOperation(H) compte uniquement le nombre de fois où H est appelée, tandis que StartCountingOperation(Adjoint H) compte uniquement le nombre de fois que Adjoint H est appelé, même si H est auto-adjoint. Cela est dû à la façon dont l’exécution traite l’appel de ces opérations comme distinct par leur spécialisation. De la même façon, StartCountingOperation(Controlled X) compte uniquement le nombre de fois Controlled X est appelé, tandis que StartCountingOperation(CNOT) compte uniquement le nombre de fois où CNOT est appelé.

Lorsque vous comptez des lambdas, le symbole auquel l’lambda est lié est utilisé pour identifier l’opération et il est compté comme une opération distincte. Par exemple

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

Compte spécifiquement les appels à myOp et non H. En revanche, le code suivant compte les appels à H lui-même :

let myOp = H;
StartCountingOperation(myOp);

Cela est dû au fait que ce code ne définit pas d’lambda et crée simplement une liaison pour H directement.