You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Since #4591 merged there has been a significant performance regression in circuit construction time. The addition of an isinstance check on numbers.Integral adds significant overhead. This is likely because ABCmeta (which is what numbers.Integral is built on) defines a custom isinstance checker to enable external registration.
Come up with a scheme for type checking that doesn't introduce so much overhead, like either changing the ordering or iexplicitly checking for numpy trpes instead of relying on Numbers.integral or if we can't come up with a performant alternative then we should revert #4591.
The text was updated successfully, but these errors were encountered:
Information
What is the current behavior?
Since #4591 merged there has been a significant performance regression in circuit construction time. The addition of an
isinstance
check onnumbers.Integral
adds significant overhead. This is likely becauseABCmeta
(which is whatnumbers.Integral
is built on) defines a custom isinstance checker to enable external registration.For example: https://qiskit.github.io/qiskit/#converters.ConverterBenchmarks.time_circuit_to_instruction?machine=qiskit-benchmarking&os=Ubuntu%2018.04&ram=16%20GB&p-n_qubits=5&p-depth=8192&commits=ec5e5370
I reverted the commit locally to test the performance difference and it made a sizeable improvement:
Steps to reproduce the problem
Run circuit construction after #4591
What is the expected behavior?
Circuit construction performs the same as before.
Suggested solutions
Come up with a scheme for type checking that doesn't introduce so much overhead, like either changing the ordering or iexplicitly checking for numpy trpes instead of relying on
Numbers.integral
or if we can't come up with a performant alternative then we should revert #4591.The text was updated successfully, but these errors were encountered: