Skip to content

Instantly share code, notes, and snippets.

@mdakin
Created February 13, 2013 15:51
Show Gist options
  • Save mdakin/4945570 to your computer and use it in GitHub Desktop.
Save mdakin/4945570 to your computer and use it in GitHub Desktop.
Test app
package lexer;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.Token;
public class Test {
private static String testStr =
"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy" +
" nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim " +
"veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo " +
"consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, " +
"vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui" +
" blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. " +
"Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim" +
" placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui " +
"facit eorum claritatem. Investigationes demonstraverunt lectores legere me lius quod ii legunt saepius." +
" Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. " +
"Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum ";
private static String testStrTurkish =
" Lorem Ipsum, dizgi ve baskı endüstrisinde kullanılan mıgır metinlerdir. Lorem Ipsum, adı bilinmeyen " +
"bir matbaacının bir hurufat numune kitabı oluşturmak üzere bir yazı galerisini alarak karıştırdığı " +
"1500 lerden beri endüstri standardı sahte metinler olarak kullanılmıştır." +
" Beşyüz yıl boyunca varlığını sürdürmekle kalmamış, aynı zamanda pek değişmeden elektronik dizgiye de sıçramıştır. " +
"1960 larda Lorem Ipsum pasajları da içeren Letraset yapraklarının yayınlanması ile ve yakın zamanda " +
"Aldus PageMaker gibi Lorem Ipsum sürümleri içeren masaüstü yayıncılık yazılımları ile popüler olmuştur" +
" Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın " +
"amacı, sürekli buraya metin gelecek, buraya metin gelecek yazmaya kıyasla daha dengeli bir harf " +
"dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve web sayfa " +
"düzenleyicisi, varsayılan mıgır metinler olarak Lorem Ipsum kullanmaktadır. Ayrıca arama motorlarında " +
"lorem ipsum anahtar sözcükleri ile arama yapıldığında";
public static void runTest(String seed, int times) {
StringBuilder bigStr = new StringBuilder();
for (int i=0; i<times; i++) {
bigStr.append(seed);
}
ANTLRInputStream stream = new ANTLRInputStream(bigStr.toString());
TestLexer lexer = new TestLexer(stream);
long start = System.currentTimeMillis();
int i=0, words=0, punct=0;
for (Token token = lexer.nextToken();
token.getType() != Token.EOF;
token = lexer.nextToken()) {
i++;
switch (token.getType()) {
case TestLexer.Word : words++; break;
case TestLexer.Punctuation : punct++; break;
}
}
long end = System.currentTimeMillis();
System.out.println("Total time: " + (end - start) + "ms." );
System.out.println("Number of tokens: " + i + " Perf: " + 1000.0 * i / (end-start) + " tokens/s");
System.out.println("words: " + words + " punctuations:" + punct);
}
public static void main(String[] args) {
System.out.println("For Ascii lorem ipsum text:");
runTest(testStr, 10000);
System.out.println();
System.out.println("For Turkish text:");
runTest(testStrTurkish, 10000);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment