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
, CNOT
et 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.