95 lines
2.6 KiB
Java
95 lines
2.6 KiB
Java
|
|
public class Benchmark {
|
||
|
|
public static int fibonacci(int n) {
|
||
|
|
if (n <= 1) {
|
||
|
|
return n;
|
||
|
|
}
|
||
|
|
return fibonacci(n - 1) + fibonacci(n - 2);
|
||
|
|
}
|
||
|
|
|
||
|
|
public static int fibonacciIterative(int n) {
|
||
|
|
if (n <= 1) {
|
||
|
|
return n;
|
||
|
|
}
|
||
|
|
int a = 0;
|
||
|
|
int b = 1;
|
||
|
|
for (int i = 2; i <= n; i++) {
|
||
|
|
int temp = a + b;
|
||
|
|
a = b;
|
||
|
|
b = temp;
|
||
|
|
}
|
||
|
|
return b;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static int countPrimes(int limit) {
|
||
|
|
int count = 0;
|
||
|
|
for (int n = 2; n <= limit; n++) {
|
||
|
|
boolean isPrime = true;
|
||
|
|
for (int i = 2; i * i <= n; i++) {
|
||
|
|
if (n % i == 0) {
|
||
|
|
isPrime = false;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (isPrime) {
|
||
|
|
count++;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return count;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static long sumLoop(int iterations) {
|
||
|
|
long sum = 0L;
|
||
|
|
for (int i = 0; i < iterations; i++) {
|
||
|
|
sum = sum + i;
|
||
|
|
}
|
||
|
|
return sum;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static int main() {
|
||
|
|
System.out.println("=== Rava Benchmark Suite ===");
|
||
|
|
|
||
|
|
long start = System.nanoTime();
|
||
|
|
int fib30 = fibonacci(30);
|
||
|
|
long end = System.nanoTime();
|
||
|
|
long fibTime = (end - start) / 1000000;
|
||
|
|
System.out.print("Fibonacci(30) recursive = ");
|
||
|
|
System.out.println(fib30);
|
||
|
|
System.out.print("Time: ");
|
||
|
|
System.out.print(fibTime);
|
||
|
|
System.out.println(" ms");
|
||
|
|
|
||
|
|
start = System.nanoTime();
|
||
|
|
int fib40iter = fibonacciIterative(40);
|
||
|
|
end = System.nanoTime();
|
||
|
|
long fibIterTime = (end - start) / 1000000;
|
||
|
|
System.out.print("Fibonacci(40) iterative = ");
|
||
|
|
System.out.println(fib40iter);
|
||
|
|
System.out.print("Time: ");
|
||
|
|
System.out.print(fibIterTime);
|
||
|
|
System.out.println(" ms");
|
||
|
|
|
||
|
|
start = System.nanoTime();
|
||
|
|
int primes = countPrimes(100000);
|
||
|
|
end = System.nanoTime();
|
||
|
|
long primeTime = (end - start) / 1000000;
|
||
|
|
System.out.print("Primes up to 100000 = ");
|
||
|
|
System.out.println(primes);
|
||
|
|
System.out.print("Time: ");
|
||
|
|
System.out.print(primeTime);
|
||
|
|
System.out.println(" ms");
|
||
|
|
|
||
|
|
start = System.nanoTime();
|
||
|
|
long sumResult = sumLoop(10000000);
|
||
|
|
end = System.nanoTime();
|
||
|
|
long sumTime = (end - start) / 1000000;
|
||
|
|
System.out.print("Sum 0..10000000 = ");
|
||
|
|
System.out.println(sumResult);
|
||
|
|
System.out.print("Time: ");
|
||
|
|
System.out.print(sumTime);
|
||
|
|
System.out.println(" ms");
|
||
|
|
|
||
|
|
System.out.println("=== Benchmark Complete ===");
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
}
|