224 lines
4.6 KiB
Java
224 lines
4.6 KiB
Java
/**
|
|
* Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
|
* This class implements the Intface interface
|
|
* increments value of integer and floats
|
|
*/
|
|
|
|
import java.util.*;
|
|
|
|
public class Routine implements Intface {
|
|
|
|
/* add integers */
|
|
public int add_int (int scale) {
|
|
int x = 0;
|
|
int kmax = 100*scale;
|
|
double tEnd = jsynprog.Timer() + jsynprog.testtime;
|
|
do { x = 0;
|
|
for (int k=0; k<kmax;k++) {
|
|
for (int j=0; j<10000;j++) {
|
|
x = x + 1;
|
|
}
|
|
}
|
|
} while (jsynprog.Timer() < tEnd);
|
|
return x;
|
|
}
|
|
|
|
/* add double */
|
|
public double add_double (int scale) {
|
|
double y = 0.0;
|
|
int kmax = 1*scale;
|
|
double tEnd = jsynprog.Timer() + jsynprog.testtime;
|
|
do { y = 0.0;
|
|
for (int k=0; k<kmax;k++) {
|
|
for (int j=0; j<10000;j++) {
|
|
y = y + 1.0;
|
|
}
|
|
}
|
|
} while (jsynprog.Timer() < tEnd);
|
|
return y;
|
|
}
|
|
|
|
/* Use inner class */
|
|
public Integer[] has_inner_class(int scale) {
|
|
class JInner {
|
|
Integer[] g_int = new Integer[3];
|
|
|
|
public Integer[] buildlist(int scale) {
|
|
double tEnd = jsynprog.Timer() + jsynprog.testtime;
|
|
do {
|
|
for (int k=0; k<g_int.length; k++) {
|
|
int x = 0;
|
|
int imax = 10*scale;
|
|
for (int i=0; i<imax;i++) {
|
|
for (int j=0; j<10000;j++) {
|
|
x = x + 1;
|
|
}
|
|
}
|
|
g_int[k]=new Integer (x);
|
|
}
|
|
} while (jsynprog.Timer() < tEnd);
|
|
return g_int;
|
|
}
|
|
}
|
|
return ((new JInner()).buildlist(scale));
|
|
}
|
|
|
|
public void memalloc (int nsize, int scale) {
|
|
class myobj {
|
|
int nitem;
|
|
String shape;
|
|
String color;
|
|
|
|
myobj() {
|
|
nitem = 4;
|
|
shape = "square";
|
|
color = "blue";
|
|
}
|
|
}
|
|
for (int j=0; j<60; j++) {
|
|
for (int i=0; i<20; i++) {
|
|
myobj[] blueobj = new myobj[1000000];
|
|
}
|
|
}
|
|
}
|
|
|
|
/* routine to do recursion */
|
|
public void recurse(int i, int imax, int scale) {
|
|
if(i == imax) {
|
|
double tEnd = jsynprog.Timer() + jsynprog.testtime;
|
|
do {
|
|
double x;
|
|
int j, k;
|
|
x = 0.0;
|
|
for(k=0; k<scale; k++) {
|
|
for(j=0; j<5000000; j++) {
|
|
x = x + 1.0;
|
|
}
|
|
}
|
|
} while (jsynprog.Timer() < tEnd);
|
|
} else {
|
|
recurse(i+1, imax, scale);
|
|
}
|
|
}
|
|
|
|
/* routine to do deep recursion */
|
|
public void recursedeep(int i, int imax, int scale) {
|
|
if(i == imax) {
|
|
double tEnd = jsynprog.Timer() + jsynprog.testtime;
|
|
do {
|
|
double x;
|
|
int j, k;
|
|
x = 0.0;
|
|
for(k=0; k<scale; k++) {
|
|
for(j=0; j<5000000; j++) {
|
|
x = x + 1.0;
|
|
}
|
|
}
|
|
} while (jsynprog.Timer() < tEnd);
|
|
} else {
|
|
recursedeep(i+1, imax, scale);
|
|
}
|
|
}
|
|
|
|
|
|
/* bounce -- example of indirect recursion */
|
|
public void bounce(int i, int imax, int scale) {
|
|
if(i == imax) {
|
|
double tEnd = jsynprog.Timer() + jsynprog.testtime;
|
|
do {
|
|
double x;
|
|
int j, k;
|
|
x = 0.0;
|
|
for(k=0; k < scale; k++) {
|
|
for(j=0; j<5000000; j++) {
|
|
x = x + 1.0;
|
|
}
|
|
}
|
|
} while (jsynprog.Timer() < tEnd);
|
|
} else {
|
|
bounce_b(i, imax, scale);
|
|
}
|
|
}
|
|
|
|
private void bounce_b(int i, int imax, int scale) {
|
|
bounce(i+1, imax, scale);
|
|
return;
|
|
}
|
|
|
|
|
|
/* large array */
|
|
public void array_op(int scale) {
|
|
int size = 50000;
|
|
int imax = 1*scale;
|
|
Integer[] y = allocate_array(3*size);
|
|
Integer[] z = allocate_array(size);
|
|
double tEnd = jsynprog.Timer() + jsynprog.testtime;
|
|
do {
|
|
for (int i=0; i<imax; i++) {
|
|
System.arraycopy(y, 2, z, 0, size);
|
|
}
|
|
} while (jsynprog.Timer() < tEnd);
|
|
}
|
|
|
|
/* define large array */
|
|
private Integer[] allocate_array(int num) {
|
|
Integer[] x = new Integer[num];
|
|
for (int i=0; i<num;i++) {
|
|
x[i] = new Integer(i);
|
|
}
|
|
return x;
|
|
}
|
|
|
|
|
|
/* large vector */
|
|
public void vector_op(int scale) {
|
|
Vector v = allocate_vector();
|
|
int imax = 1*scale;
|
|
int jmax = 1*scale;
|
|
double tEnd = jsynprog.Timer() + jsynprog.testtime;
|
|
do {
|
|
for (int i=0; i<imax; i++) {
|
|
vrem_last(v);
|
|
}
|
|
for (int j=0; j<jmax; j++) {
|
|
vrem_first(v);
|
|
}
|
|
} while (jsynprog.Timer() < tEnd);
|
|
}
|
|
|
|
/* define large Vector */
|
|
private Vector allocate_vector() {
|
|
Vector<Integer> v1 = new Vector<Integer> (200000);
|
|
for (int i=0; i<1000000;i++) {
|
|
v1.add(new Integer(i));
|
|
}
|
|
return v1;
|
|
}
|
|
|
|
/* remove last element of vector */
|
|
private void vrem_last(Vector v) {
|
|
v.remove(v.size()-1);
|
|
}
|
|
|
|
/* remove first element of vector */
|
|
private void vrem_first(Vector v) {
|
|
v.remove(0);
|
|
}
|
|
|
|
|
|
/* Spend time in system calls */
|
|
public void sys_op(int scale) {
|
|
long stime ;
|
|
int jmax = 1000000;
|
|
int imax = 4;
|
|
double tEnd = jsynprog.Timer() + jsynprog.testtime;
|
|
do {
|
|
for (int i = 0; i < imax; i++) {
|
|
for(int j=0; j<jmax; j++) {
|
|
stime = System.currentTimeMillis();
|
|
}
|
|
}
|
|
} while (jsynprog.Timer() < tEnd);
|
|
}
|
|
|
|
} //end of class
|