/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
if (cause == null)
return "";
cause.printStackTrace(pw);
pw.flush();
return sw.toString();
}
private static String stackString
() { return (System.
currentTimeMillis() + STATIC_TRACE
); }
private static final long countReuse() {
final long until
= System.
currentTimeMillis() + 500; long len = 0;
long count = 0;
do {
len += stackTrace(except).length();
count++;
} while (System.
currentTimeMillis() < until
); System.
out.
println("Reuse " + len
); return count;
}
private static final long countRecreate() {
final long until
= System.
currentTimeMillis() + 500; long count = 0;
long len = 0;
do {
count++;
} while (System.
currentTimeMillis() < until
); System.
out.
println("Recreate " + len
); return count;
}
private static final long countFilled() {
final long until
= System.
currentTimeMillis() + 500; long count = 0;
long len = 0;
do {
count++;
} while (System.
currentTimeMillis() < until
); System.
out.
println("Filled " + len
); return count;
}
private static final long countString() {
final long until
= System.
currentTimeMillis() + 500; long count = 0;
long len = 0;
do {
len += stackString().length();
count++;
} while (System.
currentTimeMillis() < until
); System.
out.
println("Filled " + len
); return count;
}
{
long a = countReuse();
long b = countRecreate();
long c = countFilled();
long d = countString();
long e = countReuse();
long f = countRecreate();
long g = countFilled();
long h = countString();
System.
out.
printf("Warm: Reuse %d Recreate %d Filled %d String %d%nReal: Reuse %d Recreate %d Filled %d String %d%n",
a,b,c,d,e,f,g,h
);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBzdGFja1RyYWNlKFRocm93YWJsZSBjYXVzZSkgewogICAgICAgIGlmIChjYXVzZSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gIiI7CiAgICAgICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigxMDI0KTsKICAgICAgICBmaW5hbCBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7CiAgICAgICAgY2F1c2UucHJpbnRTdGFja1RyYWNlKHB3KTsKICAgICAgICBwdy5mbHVzaCgpOwogICAgICAgIHJldHVybiBzdy50b1N0cmluZygpOwogICAgfQogICAgCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RBVElDX1RSQUNFID0gc3RhY2tUcmFjZSAobmV3IFJ1bnRpbWVFeGNlcHRpb24oIkRhZnQiKSk7CiAgICAKICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBzdGFja1N0cmluZygpIHsKICAgIAlyZXR1cm4gKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpICsgU1RBVElDX1RSQUNFKTsKICAgIH0KICAgIAogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBjb3VudFJldXNlKCkgewogICAgCWZpbmFsIGxvbmcgdW50aWwgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSArIDUwMDsKICAgIAlsb25nIGxlbiA9IDA7CiAgICAJbG9uZyBjb3VudCA9IDA7CiAgICAJUnVudGltZUV4Y2VwdGlvbiBleGNlcHQgPSBuZXcgUnVudGltZUV4Y2VwdGlvbigiU3RhdGljIik7CiAgICAJZG8gewogICAgCQlsZW4gKz0gc3RhY2tUcmFjZShleGNlcHQpLmxlbmd0aCgpOwogICAgCQljb3VudCsrOwogICAgCX0gd2hpbGUgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIDwgdW50aWwpOwogICAgCVN5c3RlbS5vdXQucHJpbnRsbigiUmV1c2UgIiArIGxlbik7CiAgICAJcmV0dXJuIGNvdW50OwogICAgfQogICAgCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIGNvdW50UmVjcmVhdGUoKSB7CiAgICAJZmluYWwgbG9uZyB1bnRpbCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpICsgNTAwOwogICAgCWxvbmcgY291bnQgPSAwOwogICAgCWxvbmcgbGVuID0gMDsKICAgIAlkbyB7CiAgICAJCWxlbiArPSBzdGFja1RyYWNlKG5ldyBSdW50aW1lRXhjZXB0aW9uKCJTdGF0aWMiKSkubGVuZ3RoKCk7CiAgICAJCWNvdW50Kys7CiAgICAJfSB3aGlsZSAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgPCB1bnRpbCk7CiAgICAJU3lzdGVtLm91dC5wcmludGxuKCJSZWNyZWF0ZSAiICsgbGVuKTsKICAgIAlyZXR1cm4gY291bnQ7CiAgICB9CiAgICAKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgY291bnRGaWxsZWQoKSB7CiAgICAJZmluYWwgbG9uZyB1bnRpbCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpICsgNTAwOwogICAgCWxvbmcgY291bnQgPSAwOwogICAgCWxvbmcgbGVuID0gMDsKICAgIAlkbyB7CiAgICAJCWxlbiArPSBzdGFja1RyYWNlKG5ldyBSdW50aW1lRXhjZXB0aW9uKCJTdGF0aWMiKS5maWxsSW5TdGFja1RyYWNlKCkpLmxlbmd0aCgpOwogICAgCQljb3VudCsrOwogICAgCX0gd2hpbGUgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIDwgdW50aWwpOwogICAgCVN5c3RlbS5vdXQucHJpbnRsbigiRmlsbGVkICIgKyBsZW4pOwogICAgCXJldHVybiBjb3VudDsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIGNvdW50U3RyaW5nKCkgewogICAgCWZpbmFsIGxvbmcgdW50aWwgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSArIDUwMDsKICAgIAlsb25nIGNvdW50ID0gMDsKICAgIAlsb25nIGxlbiA9IDA7CiAgICAJZG8gewogICAgCQlsZW4gKz0gc3RhY2tTdHJpbmcoKS5sZW5ndGgoKTsKICAgIAkJY291bnQrKzsKICAgIAl9IHdoaWxlIChTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSA8IHVudGlsKTsKICAgIAlTeXN0ZW0ub3V0LnByaW50bG4oIkZpbGxlZCAiICsgbGVuKTsKICAgIAlyZXR1cm4gY291bnQ7CiAgICB9CiAgICAKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWxvbmcgYSA9IGNvdW50UmV1c2UoKTsKCQlsb25nIGIgPSBjb3VudFJlY3JlYXRlKCk7CgkJbG9uZyBjID0gY291bnRGaWxsZWQoKTsKCQlsb25nIGQgPSBjb3VudFN0cmluZygpOwoJCWxvbmcgZSA9IGNvdW50UmV1c2UoKTsKCQlsb25nIGYgPSBjb3VudFJlY3JlYXRlKCk7CgkJbG9uZyBnID0gY291bnRGaWxsZWQoKTsKCQlsb25nIGggPSBjb3VudFN0cmluZygpOwoJCVN5c3RlbS5vdXQucHJpbnRmKCJXYXJtOiBSZXVzZSAlZCBSZWNyZWF0ZSAlZCBGaWxsZWQgJWQgU3RyaW5nICVkJW5SZWFsOiBSZXVzZSAlZCBSZWNyZWF0ZSAlZCBGaWxsZWQgJWQgU3RyaW5nICVkJW4iLCAKCQkgICAgYSxiLGMsZCxlLGYsZyxoCgkJKTsKCX0KfQ==