sclass FunctionTimings {
Map data = syncMap();
void time(A function, Runnable r) {
if (r == null) ret;
Average avg = mapGetOrCreate(data, function, -> new Average);
long time = nanoTime();
try {
r.run();
} finally {
time = nanoTime()-time;
avg.add(time);
}
}
Map get() { ret cloneMap(data); }
}