module measurement.phobostimer; @safe: @nogc: struct PhobosTimer { enum MeasurementName = "PhobosTimer"; size_t eventCount() const { return 1; } string[][] getHeader() const { static _data = [["PhobosTimer"]]; return _data; } import std.datetime.stopwatch; public static struct StateT { @disable this(this); StopWatch timer; pragma(inline, true) void start() { timer.start(); } pragma(inline, true) void stop() { timer.stop(); } void read(T)(T[] output) const { output[0] = timer.peek.total!"nsecs"; } } this(string x) { } StateT getState() { StateT tmp; tmp.timer = StopWatch(AutoStart.no); return tmp; } }