mirror of
https://github.com/Noratrieb/benchmarks.git
synced 2026-01-14 10:45:04 +01:00
java primes
This commit is contained in:
commit
bd77a7dfff
5 changed files with 76 additions and 0 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
*/.idea
|
||||||
|
.idea
|
||||||
|
*.iml
|
||||||
|
*.class
|
||||||
|
out
|
||||||
8
primes/README.md
Normal file
8
primes/README.md
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Primes
|
||||||
|
|
||||||
|
Find all primes from 0 to 10 000 000.
|
||||||
|
Printing time is not included.
|
||||||
|
|
||||||
|
| Language | Time |
|
||||||
|
| ---------| -------|
|
||||||
|
| Java | 1836ms |
|
||||||
33
primes/java/src/DefaultPrimes.java
Normal file
33
primes/java/src/DefaultPrimes.java
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class DefaultPrimes implements Primes {
|
||||||
|
|
||||||
|
// (will make the code 15% slower)
|
||||||
|
@SuppressWarnings("ForLoopReplaceableByForEach")
|
||||||
|
public List<Integer> primes(int max) {
|
||||||
|
List<Integer> primesList = new ArrayList<>(10000);
|
||||||
|
|
||||||
|
primesList.add(2);
|
||||||
|
|
||||||
|
for (int i = 3; i < max; i++) { //go through all numbers
|
||||||
|
boolean isPrime = true;
|
||||||
|
for (int j = 0; j < primesList.size(); j++) { //test each number
|
||||||
|
int prime = primesList.get(j);
|
||||||
|
if (prime > Math.sqrt(i)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i % prime == 0) { //i = test number, j = some known prime
|
||||||
|
isPrime = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isPrime) {
|
||||||
|
primesList.add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return primesList;
|
||||||
|
}
|
||||||
|
}
|
||||||
25
primes/java/src/Main.java
Normal file
25
primes/java/src/Main.java
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Primes primes = new DefaultPrimes();
|
||||||
|
List<Long> times = new ArrayList<>();
|
||||||
|
List<Integer> values = null;
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
System.out.println("iteration " + i + " started");
|
||||||
|
long startTime = System.currentTimeMillis();
|
||||||
|
values = primes.primes(10_000_000);
|
||||||
|
long totalTime = System.currentTimeMillis() - startTime;
|
||||||
|
times.add(totalTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
double average = times.stream()
|
||||||
|
.mapToLong(l -> l)
|
||||||
|
.average()
|
||||||
|
.getAsDouble();
|
||||||
|
|
||||||
|
System.out.println("Average time after 10 times: " + average + "ms");
|
||||||
|
}
|
||||||
|
}
|
||||||
5
primes/java/src/Primes.java
Normal file
5
primes/java/src/Primes.java
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface Primes {
|
||||||
|
List<Integer> primes(int max);
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue