Parcourir la source

Performance improvement (issue #6)

didfet il y a 10 ans
Parent
commit
3a0b3acb7a
2 fichiers modifiés avec 8 ajouts et 5 suppressions
  1. 1 1
      pom.xml
  2. 7 4
      src/main/java/info/fetter/logstashforwarder/FileReader.java

+ 1 - 1
pom.xml

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

+ 7 - 4
src/main/java/info/fetter/logstashforwarder/FileReader.java

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