Skip to content

Commit bc286ba

Browse files
committed
Add new BufferedScannerSolution for IO measurements.
Turns out is faster than the regular ScannerSolution but just by a small margin, most likely because Scanner does buffering internally already. And fix templates once more :/
1 parent 4831739 commit bc286ba

5 files changed

+36
-4
lines changed

io/BufferedScannerSolution.java

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import java.io.BufferedInputStream;
2+
import java.io.BufferedOutputStream;
3+
import java.io.InputStreamReader;
4+
import java.io.PrintWriter;
5+
import java.util.Scanner;
6+
7+
public class BufferedScannerSolution implements Runnable {
8+
9+
private static void solve() {
10+
long sum = 0;
11+
int n = in.nextInt();
12+
while (n-- > 0) {
13+
sum += in.nextInt();
14+
}
15+
out.println(sum);
16+
}
17+
18+
/** Template starts: */
19+
@Override
20+
public void run() {
21+
solve();
22+
out.flush();
23+
System.exit(0);
24+
}
25+
26+
private final static Scanner in = new Scanner(new InputStreamReader(new BufferedInputStream(System.in)));
27+
private final static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
28+
29+
public static void main(String[] args) {
30+
new Thread(null, new BufferedScannerSolution(), "Main", 1 << 26).start();
31+
}
32+
}

io/measure.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ measure_solution() {
1515

1616
measure_file() {
1717
input_file=$1
18-
declare -a solutions=("InputReaderSolution" "StringTokenizerSolution" "ScannerSolution")
18+
declare -a solutions=("InputReaderSolution" "StringTokenizerSolution" "BufferedScannerSolution" "ScannerSolution")
1919
echo "Measuring solutions with file $input_file:"
2020
all_runtimes=
2121
for solution in "${solutions[@]}"; do

templates/InputReaderTemplate.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public void run() {
2121
private final static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
2222

2323
public static void main(String[] args) {
24-
new Thread(null, new InputReaderSolution(), "Main", 1 << 26).start();
24+
new Thread(null, new InputReaderTemplate(), "Main", 1 << 26).start();
2525
}
2626

2727
private static class InputReader {

templates/ScannerTemplate.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ public void run() {
2020
private final static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
2121

2222
public static void main(String[] args) {
23-
new Thread(null, new ScannerSolution(), "Main", 1 << 26).start();
23+
new Thread(null, new ScannerTemplate(), "Main", 1 << 26).start();
2424
}
2525
}

templates/StringTokenizerTemplate.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public void run() {
1919
private final static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
2020

2121
public static void main(String[] args) {
22-
new Thread(null, new StringTokenizerSolution(), "Main", 1 << 26).start();
22+
new Thread(null, new StringTokenizerTemplate(), "Main", 1 << 26).start();
2323
}
2424

2525
private static long readLong() {

0 commit comments

Comments
 (0)