2015-02-19 00:57:00 +08:00
|
|
|
from math import sqrt
|
|
|
|
|
|
|
|
from artiq import *
|
|
|
|
|
|
|
|
|
|
|
|
class RPCTiming(AutoDB):
|
2015-02-21 05:01:34 +08:00
|
|
|
__artiq_unit__ = "RPC timing"
|
|
|
|
|
2015-02-19 00:57:00 +08:00
|
|
|
class DBKeys:
|
|
|
|
repeats = Argument(100)
|
|
|
|
rpc_time_mean = Result()
|
|
|
|
rpc_time_stddev = Result()
|
|
|
|
|
|
|
|
def nop(self, x):
|
|
|
|
pass
|
|
|
|
|
|
|
|
@kernel
|
|
|
|
def bench(self):
|
|
|
|
self.ts = [0.0 for _ in range(self.repeats)]
|
|
|
|
for i in range(self.repeats):
|
|
|
|
t1 = self.core.get_rtio_time()
|
|
|
|
self.nop(10)
|
|
|
|
t2 = self.core.get_rtio_time()
|
|
|
|
self.ts[i] = float(t2.amount - t1.amount)
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
self.bench()
|
|
|
|
mean = sum(self.ts)/self.repeats
|
|
|
|
self.rpc_time_stddev = sqrt(
|
|
|
|
sum([(t - mean)**2 for t in self.ts]))/self.repeats*s
|
|
|
|
self.rpc_time_mean = mean*s
|