31 lines
760 B
Python
31 lines
760 B
Python
|
import timeit
|
||
|
from collections import deque
|
||
|
import numpy as np
|
||
|
|
||
|
def measure_execution_time(circuit, state, repeat=100, **kwargs):
|
||
|
results = deque()
|
||
|
for _ in range(repeat):
|
||
|
|
||
|
s = state.deepcopy()
|
||
|
start = timeit.default_timer()
|
||
|
result = circuit * s
|
||
|
stop = timeit.default_timer()
|
||
|
|
||
|
results.append(stop - start)
|
||
|
return min(results)
|
||
|
|
||
|
|
||
|
def execution_statistics(circuits, state, scale=1, **kwargs):
|
||
|
results = deque()
|
||
|
|
||
|
for circuit in circuits:
|
||
|
results.append(measure_execution_time(circuit, state, **kwargs))
|
||
|
|
||
|
results = np.array(results, dtype=np.double)
|
||
|
results /= scale
|
||
|
N = len(results)
|
||
|
avg = np.average(results)
|
||
|
std_dev = np.std(results) / np.sqrt(N)
|
||
|
|
||
|
return N, avg, std_dev
|