| /** |
| * 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 |