Projet_SETI_RISC-V/riscv-gnu-toolchain/gdb/gprofng/testsuite/gprofng.display/jsynprog/Routine.java
2023-03-06 14:48:14 +01:00

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