source: Sophya/trunk/Eval/Speed/cpupower.java@ 2537

Last change on this file since 2537 was 2537, checked in by ansari, 21 years ago

Amelioration programme cpupower.c (estimation puissance CPU) et version java (cpupower.java) - Reza 18 Mai 2004

  • Property svn:executable set to *
File size: 3.5 KB
Line 
1/* Class CPUPower .. Test performances CPU en Java */
2/* Compilation: javac cpupower.java */
3/* Execution: java CPUPower Ope Size */
4/* R. Ansari - LAL/UPS - Mai 2004 */
5
6import java.lang.*;
7
8class CPUPower {
9
10 public static void main(String[] args) throws java.io.IOException {
11 if (args.length < 1) {
12 System.out.println("Java CPUPower.main() Usage: java CPUPower Ope=1/2/3/4/5 [Size=20000]");
13 return;
14 }
15 Integer aOp = new Integer(args[0]);
16 Integer N;
17 if (args.length > 1) N = new Integer(args[1]);
18 else N = new Integer("20000");
19 int sz = N.intValue();
20 if (sz < 10) sz = 20000;
21 int ope = aOp.intValue();
22 System.out.println("Java CPUPower: OPE= " + ope + " SZ= " + sz);
23 CPUPower cpup = new CPUPower(sz);
24 cpup.Compute(ope);
25 }
26
27 double x[];
28 double y[];
29 double z[];
30 int SZ;
31 int OPE;
32 long N_OP;
33 long tml,tm,dtm;
34
35 CPUPower(int sz) {
36 tml = System.currentTimeMillis();
37 SZ = sz;
38 x = new double[SZ];
39 y = new double[SZ];
40 z = new double[SZ];
41 int k;
42 for(k=0; k<SZ; k++) {
43 double xx = (k%340);
44 x[k] = Math.PI*Math.exp(-xx/160.);
45 y[k] = Math.sin(x[k]);
46 z[k] = 0.;
47 }
48 N_OP = 0;
49 tm = System.currentTimeMillis();
50 dtm = tm-tml;
51 tml = tm;
52 System.out.println("CPUPower.CPUPower Time= " + dtm + " ms ...");
53
54 }
55
56 public void Compute(int ope) {
57 OPE = ope;
58 System.out.println("CPUPower.Compute() OPE= " + OPE );
59 tml = System.currentTimeMillis();
60 if (OPE == 5) fop5();
61 else if (OPE == 4) fop4();
62 else if (OPE == 3) fop3();
63 else if (OPE == 2) fop2();
64 else fop1();
65 tm = System.currentTimeMillis();
66 dtm = tm-tml;
67 tml = tm;
68 double mflops = N_OP;
69 mflops = mflops/dtm*1.e-3;
70 System.out.println("CPUPower.Compute() N_OP= " + N_OP + " Time= " + dtm + " ms ");
71 System.out.println("CPUPower.Compute() Time= " + dtm + " ms -> MFLOPS= " + mflops);
72 }
73
74 public void fop1() {
75 System.out.println("CPUPower.fop1(): Double Loop: z[k] = Somme_i(x[k]*y[i]) --");
76 int i,j,k;
77 double s = 0.;
78 for(k=0; k<SZ; k++) {
79 for(i=0; i<SZ; i++) s += x[k]*y[i];
80 z[k] = s;
81 N_OP += 2*SZ;
82 }
83 return;
84 }
85
86 public void fop2() {
87 System.out.println("CPUPower.fop2() Double Loop: z[k] = Somme_i(x[k]*y[i]+x[i]*y[k] --");
88 double s = 0.;
89 int i,j,k;
90 for(k=0; k<SZ; k++) {
91 for(i=0; i<SZ; i++) s += x[k]*y[i]+x[i]*y[k];
92 z[k] = s;
93 N_OP += 4*SZ;
94 }
95
96 return;
97 }
98
99 public void fop3() {
100 System.out.println("CPUPower.fop3() Double Loop: z[k] = Somme_i(x[k]*y[i]+x[i]*y[k]-0.85*(y[k]+x[k])) --");
101 double s = 0.;
102 int i,j,k;
103 for(k=0; k<SZ; k++) {
104 for(i=0; i<SZ; i++) s += x[k]*y[i]+x[i]*y[k]-0.85*(y[k]+x[k]);
105 z[k] = s;
106 N_OP += 7*SZ;
107 }
108 return;
109 }
110 public void fop4() {
111 System.out.println("CPUPower.fop4() Double Loop: z[k] = Somme_i(x[k]*sin(y[i])+y[k]*cos(x[i])) --");
112 double s = 0.;
113 int i,j,k;
114 for(k=0; k<SZ; k++) {
115 for(i=0; i<SZ; i++) s += x[k]*Math.sin(y[i])+y[k]*Math.cos(x[i]);
116 z[k] = s;
117 N_OP += 70*SZ; // le facteur 70 est approximatif
118 }
119 }
120 public void fop5() {
121 System.out.println("CPUPower.fop5() Double Loop: z[k] = Somme_i(x[k]*sin(y[i])+log(abs(x[i])+0.1)+y[k]) --");
122 double s = 0.;
123 int i,j,k;
124 for(k=0; k<SZ; k++) {
125 for(i=0; i<SZ; i++) s += x[k]*Math.sin(y[i])+Math.log(Math.abs(x[i])+0.1)+y[k];
126 z[k] = s;
127 N_OP += 100*SZ; // le facteur 100 est approximatif
128 }
129 }
130
131}
132
133
134
135
136
137
Note: See TracBrowser for help on using the repository browser.