import core.time; import std.algorithm; import std.conv; import std.format; import std.stdio; import std.string; void main() { long[] shortRequests, longRequests; foreach (line; stdin.byLine) { auto index = line.countUntil("Request processed in "); if (index == -1) { stderr.writeln("Warning: skipping unknown line for stats: ", line); continue; } index += "Request processed in ".length; auto dur = line[index .. $].parseDuration; if (dur != Duration.init) { if (dur >= 10.msecs) longRequests ~= dur.total!"hnsecs"; else shortRequests ~= dur.total!"hnsecs"; } } if (shortRequests.length > 0) { writeln("STAT:short requests: (", shortRequests.length, "x)"); summarize(shortRequests); } writeln("STAT:"); if (longRequests.length > 0) { writeln("STAT:long requests over 10ms: (", longRequests.length, "x)"); summarize(longRequests); } } void summarize(long[] hnsecs) { hnsecs.sort!"a