import com.google.common.base.Stopwatch; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import java.util.concurrent.TimeUnit; public class AverageNoMapReduce { private final static int NUMBER_OF_FILES = 10; private static long timeElapsed; public static void main(String[] args) throws IOException { double allSum = 0; long count = 0; for (int fileNumber = 1; fileNumber <= NUMBER_OF_FILES; fileNumber++) { List<Integer> allNumbersFromFile = loadNumbersFromFile(fileNumber); Stopwatch timer = Stopwatch.createStarted(); for (Integer number : allNumbersFromFile) { allSum += someOpOn(number); } count += allNumbersFromFile.size(); timer.stop(); timeElapsed += timer.elapsed(TimeUnit.MILLISECONDS); } System.out.println("All content averages up to " + allSum / count); System.out.println("Time elapsed " + timeElapsed); } private static int someOpOn(Integer number) { if (number > 500) { return (int) Math.sqrt(number); } if (number > 250) { return (int) Math.atan(number); } return (int) Math.log(number); } private static List<Integer> loadNumbersFromFile(int fileNumber) throws IOException { String numbersString = new String(Files.readAllBytes(Paths.get("../FileWithNumbersGenerator/random_numbers_" + fileNumber + ".txt"))); Stopwatch timer = Stopwatch.createStarted(); StringTokenizer tokenizer = new StringTokenizer(numbersString); List<Integer> allNumbers = new ArrayList<>(); while (tokenizer.hasMoreTokens()) { Integer number = Integer.valueOf(tokenizer.nextToken()); allNumbers.add(number); } timer.stop(); timeElapsed += timer.elapsed(TimeUnit.MILLISECONDS); return allNumbers; } }