Performance improvement (issue #6)

This commit is contained in:
didfet
2015-03-31 17:32:41 +02:00
parent 73936f6ad3
commit 3a0b3acb7a
2 changed files with 8 additions and 5 deletions

View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>logstash-forwarder-java</groupId> <groupId>logstash-forwarder-java</groupId>
<artifactId>logstash-forwarder-java</artifactId> <artifactId>logstash-forwarder-java</artifactId>
<version>0.1.4</version> <version>0.2.0-SNAPSHOT</version>
<name>logstash-forwarder-java</name> <name>logstash-forwarder-java</name>
<description>Java version of logstash forwarder</description> <description>Java version of logstash forwarder</description>
<url>https://github.com/didfet/logstash-forwarder-java</url> <url>https://github.com/didfet/logstash-forwarder-java</url>

View File

@@ -44,6 +44,8 @@ public class FileReader {
private int spoolSize = 0; private int spoolSize = 0;
private List<Event> eventList; private List<Event> eventList;
private Map<File,Long> pointerMap; private Map<File,Long> pointerMap;
private final int STRINGBUILDER_INITIAL_CAPACITY = 1000;
private StringBuilder stringBuilder;
private String hostname; private String hostname;
{ {
try { try {
@@ -60,6 +62,7 @@ public class FileReader {
public int readFiles(Collection<FileState> fileList) throws AdapterException { public int readFiles(Collection<FileState> fileList) throws AdapterException {
int eventCount = 0; int eventCount = 0;
stringBuilder = new StringBuilder(STRINGBUILDER_INITIAL_CAPACITY);
if(logger.isTraceEnabled()) { if(logger.isTraceEnabled()) {
logger.trace("Reading " + fileList.size() + " file(s)"); logger.trace("Reading " + fileList.size() + " file(s)");
} }
@@ -141,22 +144,22 @@ public class FileReader {
} }
private String readLine(RandomAccessFile reader) throws IOException { private String readLine(RandomAccessFile reader) throws IOException {
StringBuffer sb = new StringBuffer(); stringBuilder.setLength(0);
int ch; int ch;
boolean seenCR = false; boolean seenCR = false;
while((ch=reader.read()) != -1) { while((ch=reader.read()) != -1) {
switch(ch) { switch(ch) {
case '\n': case '\n':
return sb.toString(); return stringBuilder.toString();
case '\r': case '\r':
seenCR = true; seenCR = true;
break; break;
default: default:
if (seenCR) { if (seenCR) {
sb.append('\r'); stringBuilder.append('\r');
seenCR = false; seenCR = false;
} }
sb.append((char)ch); // add character, not its ascii value stringBuilder.append((char)ch); // add character, not its ascii value
} }
} }
return null; return null;