Wednesday, July 20, 2011

How to disable System.out?

I have a legacy code base with tons of System.out.println(). Actually, I don't need this in production, but during development it's cool enough to have. So, I've decided to disable System.out:
package org.halyph;

import java.io.OutputStream;
import java.io.PrintStream;

public class DisableMain {
	public static void main(String[] args) {
		PrintStream printStreamOriginal = System.out;

		boolean DEBUG = true;
		if (!DEBUG) {
			System.setOut(new PrintStream(new OutputStream() {
				public void close() {}
				public void flush() {}
				public void write(byte[] b) {}
				public void write(byte[] b, int off, int len) {}
				public void write(int b) {
				}
			}));
		}

		long a = System.currentTimeMillis();
		for (int i = 0; i < 1000000; i++) {
			System.out.println("Hello");
		}

		long b = System.currentTimeMillis() - a;

		System.setOut(printStreamOriginal);
		System.out.println(b);
	}
}

So, plain looped println required ~10 seconds on my laptop, and only ~1 second with null output stream.

No comments:

Post a Comment