class Ideone
{
public static void main
(String[] args
) {
try (Profile p = new Profile("count from 1 to 1000"))
{
for (int i = 0; i < 1000; ++i)
{
// ...
}
}
}
}
class Profile implements AutoCloseable
{
private final String description
; private final long t0;
public Profile
(String description
) {
this.description = description;
}
@Override
public void close()
{
long elapsed = t - t0;
if (elapsed >= 10_000)
{
elapsed /= 1_000;
unit = "µs";
}
if (elapsed >= 10_000)
{
elapsed /= 1_000;
unit = "ms";
}
if (elapsed >= 10_000)
{
elapsed /= 1_000;
unit = "s";
}
System.
out.
printf("%4d %s (%s)%n", elapsed, unit, description
); }
}
Y2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCgl7CgkJdHJ5IChQcm9maWxlIHAgPSBuZXcgUHJvZmlsZSgiY291bnQgZnJvbSAxIHRvIDEwMDAiKSkKCQl7CgkJCWZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsgKytpKQoJCQl7CgkJCQkvLyAuLi4KCQkJfQoJCX0KCX0KfQoKY2xhc3MgUHJvZmlsZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUKewogICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgZGVzY3JpcHRpb247CiAgICBwcml2YXRlIGZpbmFsIGxvbmcgdDA7CgogICAgcHVibGljIFByb2ZpbGUoU3RyaW5nIGRlc2NyaXB0aW9uKQogICAgewogICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKICAgICAgICB0MCA9IFN5c3RlbS5uYW5vVGltZSgpOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIHZvaWQgY2xvc2UoKQogICAgewogICAgICAgIGxvbmcgdCA9IFN5c3RlbS5uYW5vVGltZSgpOwogICAgICAgIGxvbmcgZWxhcHNlZCA9IHQgLSB0MDsKICAgICAgICBTdHJpbmcgdW5pdCA9ICJucyI7CgogICAgICAgIGlmIChlbGFwc2VkID49IDEwXzAwMCkKICAgICAgICB7CiAgICAgICAgICAgIGVsYXBzZWQgLz0gMV8wMDA7CiAgICAgICAgICAgIHVuaXQgPSAiwrVzIjsKICAgICAgICB9CiAgICAgICAgaWYgKGVsYXBzZWQgPj0gMTBfMDAwKQogICAgICAgIHsKICAgICAgICAgICAgZWxhcHNlZCAvPSAxXzAwMDsKICAgICAgICAgICAgdW5pdCA9ICJtcyI7CiAgICAgICAgfQogICAgICAgIGlmIChlbGFwc2VkID49IDEwXzAwMCkKICAgICAgICB7CiAgICAgICAgICAgIGVsYXBzZWQgLz0gMV8wMDA7CiAgICAgICAgICAgIHVuaXQgPSAicyI7CiAgICAgICAgfQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCIlNGQgJXMgKCVzKSVuIiwgZWxhcHNlZCwgdW5pdCwgZGVzY3JpcHRpb24pOwogICAgfQp9Cg==