package picard; import htsjdk.samtools.util.StopWatch; import htsjdk.samtools.util.StringUtil; import java.util.StringTokenizer; /** * */ public class Test { private final String text = "C0A69ACXX111213:6:1101:10000:144257\t83\t5\t128984606\t60\t76M\t=\t128984542\t-140\tAGTGTTAGAACTTCCTCCCCAAAGCATATACTTCAGTGGCAAGCTGTCCTGGATGAAGGTATGACCAACCAGATCA\t@FFFEECC>EFHBJIGIFGIEIJJJIHED<IEHIGIIJIIIGJIGJIIIIIJGGCJIIGIHHHBHGHFFDFFFC@@\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:76"; public static void main(String[] args) { new Test().run(); } public void run() { final int ITERATIONS = 1000000; final String[] fields = new String[10000]; final StopWatch watch = new StopWatch(); watch.start(); for (int i=0; i<ITERATIONS; ++i) { if (StringUtil.split(text, fields, '\t') > 100) { System.out.println("Mama Mia that's a lot of tokens!!"); } } watch.stop(); System.out.println("StringUtil.split() took " + watch.getElapsedTime()); watch.reset(); watch.start(); for (int i=0; i<ITERATIONS; ++i) { if (split(text, fields, "\t") > 100) { System.out.println("Mama Mia that's a lot of tokens!!"); } } watch.stop(); System.out.println("StringTokenizer took " + watch.getElapsedTime()); } public int split(final String s, final String[] tokens, final String token) { final StringTokenizer tokenizer = new StringTokenizer(s, token, false); int i=0; while (tokenizer.hasMoreTokens()) { tokens[i++] = tokenizer.nextToken(); } return i; } }