class Volatile
{
private volatile static int ile1 = 0;
private static int ile2 = 0;
//------------------------
public static void main
(String[] args
) {
int ileRazy = 10000;
try
{
ileRazy
= Integer.
parseInt(args
[0]); }
{
}
long start
= System.
nanoTime(); for(int i=0;i<ileRazy;i++)
{
compute1();
}
System.
out.
println("Przesuwanie volatile "+(end
-start
)/Math.
pow(10,
6));
for(int i=0;i<ileRazy;i++)
{
compute2();
}
System.
out.
println("Dzielenie volatile "+(end
-start
)/Math.
pow(10,
6));
for(int i=0;i<ileRazy;i++)
{
compute3();
}
System.
out.
println("Przesuwanie "+(end
-start
)/Math.
pow(10,
6));
for(int i=0;i<ileRazy;i++)
{
compute4();
}
System.
out.
println("Dzielenie "+(end
-start
)/Math.
pow(10,
6)); }
//------------------------
private static void compute1()
{
for(int i=0;i<666;i++)
{
ile1 = i >> 1;
}
}
//------------------------
private static void compute2()
{
for(int i=0;i<666;i++)
{
ile1 = i/2;
}
}
//------------------------
private static void compute3()
{
for(int i=0;i<666;i++)
{
ile2 = i >> 1;
}
}
//------------------------
private static void compute4()
{
for(int i=0;i<666;i++)
{
ile2 = i/2;
}
}
}
Y2xhc3MgVm9sYXRpbGUKewogICAgcHJpdmF0ZSB2b2xhdGlsZSBzdGF0aWMgaW50IGlsZTEgPSAwOwogICAgcHJpdmF0ZSBzdGF0aWMgaW50IGlsZTIgPSAwOwogICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgaW50IGlsZVJhenkgPSAxMDAwMDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlsZVJhenkgPSBJbnRlZ2VyLnBhcnNlSW50KGFyZ3NbMF0pOwogICAgICAgIH0KICAgICAgICBjYXRjaChFeGNlcHRpb24gZSkKICAgICAgICB7CiAgICAgICAgfQogICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0ubmFub1RpbWUoKTsgCiAgICAgICAgZm9yKGludCBpPTA7aTxpbGVSYXp5O2krKykKICAgICAgICB7CiAgICAgICAgICAgIGNvbXB1dGUxKCk7CiAgICAgICAgfQogICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLm5hbm9UaW1lKCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQcnplc3V3YW5pZSB2b2xhdGlsZSAiKyhlbmQtc3RhcnQpL01hdGgucG93KDEwLDYpKTsKICAgICAgICAKICAgICAgICBzdGFydCA9IFN5c3RlbS5uYW5vVGltZSgpOyAKICAgICAgICBmb3IoaW50IGk9MDtpPGlsZVJhenk7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgY29tcHV0ZTIoKTsKICAgICAgICB9CiAgICAgICAgZW5kID0gU3lzdGVtLm5hbm9UaW1lKCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEemllbGVuaWUgdm9sYXRpbGUgIisoZW5kLXN0YXJ0KS9NYXRoLnBvdygxMCw2KSk7ICAgICAgIAoKICAgICAgICBzdGFydCA9IFN5c3RlbS5uYW5vVGltZSgpOyAKICAgICAgICBmb3IoaW50IGk9MDtpPGlsZVJhenk7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgY29tcHV0ZTMoKTsKICAgICAgICB9CiAgICAgICAgZW5kID0gU3lzdGVtLm5hbm9UaW1lKCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQcnplc3V3YW5pZSAiKyhlbmQtc3RhcnQpL01hdGgucG93KDEwLDYpKTsKCiAgICAgICAgc3RhcnQgPSBTeXN0ZW0ubmFub1RpbWUoKTsgCiAgICAgICAgZm9yKGludCBpPTA7aTxpbGVSYXp5O2krKykKICAgICAgICB7CiAgICAgICAgICAgIGNvbXB1dGU0KCk7CiAgICAgICAgfQogICAgICAgIGVuZCA9IFN5c3RlbS5uYW5vVGltZSgpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRHppZWxlbmllICIrKGVuZC1zdGFydCkvTWF0aC5wb3coMTAsNikpOyAgICAgIAogICAgfQogICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHByaXZhdGUgc3RhdGljIHZvaWQgY29tcHV0ZTEoKQogICAgewogICAgICAgIGZvcihpbnQgaT0wO2k8NjY2O2krKykKICAgICAgICB7CiAgICAgICAgICAgIGlsZTEgPSBpID4+IDE7CiAgICAgICAgfQogICAgfQogICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHByaXZhdGUgc3RhdGljIHZvaWQgY29tcHV0ZTIoKQogICAgewogICAgICAgIGZvcihpbnQgaT0wO2k8NjY2O2krKykKICAgICAgICB7CiAgICAgICAgICAgIGlsZTEgPSBpLzI7CiAgICAgICAgfSAgICAgICAgCiAgICB9CiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBjb21wdXRlMygpCiAgICB7CiAgICAgICAgZm9yKGludCBpPTA7aTw2NjY7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWxlMiA9IGkgPj4gMTsKICAgICAgICB9ICAgICAgICAKICAgIH0KICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGNvbXB1dGU0KCkKICAgIHsKICAgICAgICBmb3IoaW50IGk9MDtpPDY2NjtpKyspCiAgICAgICAgewogICAgICAgICAgICBpbGUyID0gaS8yOwogICAgICAgIH0gICAgICAgIAogICAgfSAgICAgIAp9