/**
* LOGBack: the reliable, fast and flexible logging library for Java.
*
* Copyright (C) 1999-2005, QOS.ch, LOGBack.com
*
* This library is free software, you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation.
*/
package ch.qos.logback.classic.pattern;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import org.apache.log4j.FileAppender;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
public class WriteSpeed {
static final String MSG = "some xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxmedium length message sadf;-90123lklkhasdfl lkahjqdlsfh";
static final ByteBuffer[] BB = new ByteBuffer[0];
public static void main(String[] args) throws Exception {
long size = 100 * 1000;
nio(size);
oldPattern(size);
}
static void oldPattern(long size) throws Exception {
PatternLayout layout = new PatternLayout("%r [%t] %p %c - %m%n");
FileAppender appender = new FileAppender(layout, "toto.log", false);
Logger logger = LogManager.getRootLogger();
logger.removeAllAppenders();
logger.addAppender(appender);
long start = System.nanoTime();
for (int i = 0; i < size; i++) {
logger.info(MSG);
}
long result = System.nanoTime() - start;
System.out.println("Average OLD write speed: " + (result / size) + " nanos");
}
static void nio(long size) throws Exception {
//Charset cs = Charset.forName("ISO-8859-1");
//Charset cs = Charset.forName("US-ASCII");
//CharsetEncoder encoder = cs.newEncoder();
//String str = "1081 [main] INFO root -" + MSG + "\r\n";
//CharBuffer cbuf = CharBuffer.wrap(str);
//ByteBuffer buf = ByteBuffer.wrap(str.getBytes());
FileOutputStream fos = new FileOutputStream("niototo.log", false);
FileChannel channel = fos.getChannel();
//CoderResult cr;
//long s = size*(cbuf.length())/(8*1024);
ByteBuffer[] BALL = new ByteBuffer[] {all};
long start = System.nanoTime();
for (int i = 0; i < size; i++) {
channel.write(BALL);
all.rewind();
// for (int j = 0; j < al.size(); j++) {
// ByteBuffer bb = (ByteBuffer) al.get(j);
// bb.rewind();
// }
}
//buf.flip();
//channel.write(buf);
long result = System.nanoTime() - start;
System.out.println("NIO Average write speed: " + (result / size) + " nanos");
channel.close();
}
static ByteBuffer x1 = ByteBuffer.wrap(" [".getBytes());
static ByteBuffer x2 = ByteBuffer.wrap("] ".getBytes());
static ByteBuffer x3 = ByteBuffer.wrap("INFO".getBytes());
static ByteBuffer x4 = ByteBuffer.wrap(" ".getBytes());
static ByteBuffer x5 = ByteBuffer.wrap(" -".getBytes());
static ArrayList bbList = new ArrayList();
static ByteBuffer z1 = ByteBuffer.wrap("1081".getBytes());
static ByteBuffer z2 = ByteBuffer.wrap("main".getBytes());
static ByteBuffer z3 = ByteBuffer.wrap(MSG.getBytes());
static ByteBuffer z4 = ByteBuffer.wrap("\r\n".getBytes());
static String s = "1081 [main] INFO root - " + MSG + "\r\n";
static ByteBuffer all = ByteBuffer.wrap(s.getBytes());
static ArrayList makeList() {
// "1081 [main] INFO root -" + MSG + "\r\n";
bbList.clear();
bbList.add(all);
// bbList.add(z1);
// bbList.add(x1);
// bbList.add(z2);
// bbList.add(x2);
// bbList.add(x3);
// bbList.add(x4);
// bbList.add(x5);
// bbList.add(z3);
// bbList.add(z4);
return bbList;
}
}