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
|