/mobile Handheld Friendly website
Ubuntu : Intel® Q6600® one core |
Each table row shows performance measurements for this Java 7 program with a particular command-line input value N.
| N | CPU secs | Elapsed secs | Memory KB | Code B | ≈ CPU Load |
|---|---|---|---|---|---|
| 50,000 | 0.91 | 0.92 | 25,528 | 929 | 2% 0% 1% 99% |
| 500,000 | 3.41 | 3.42 | 94,468 | 929 | 1% 1% 0% 100% |
| 5,000,000 | 26.27 | 26.32 | 719,324 | 929 | 1% 0% 0% 100% |
Read the ↓ make, command line, and program output logs to see how this program was run.
Read regex-dna benchmark to see what this program should do.
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) Server VM (build 23.6-b04, mixed mode)
/* The Computer Language Benchmarks Game http://benchmarksgame.alioth.debian.org/ contributed by Michael Stover */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public final class regexdna { private static final Map<String, String> replacements = new HashMap<String, String>(); static { replacements.put("W", "(a|t)"); replacements.put("Y", "(c|t)"); replacements.put("K", "(g|t)"); replacements.put("M", "(a|c)"); replacements.put("S", "(c|g)"); replacements.put("R", "(a|g)"); replacements.put("B", "(c|g|t)"); replacements.put("D", "(a|g|t)"); replacements.put("V", "(a|c|g)"); replacements.put("H", "(a|c|t)"); replacements.put("N", "(a|c|g|t)"); } public static void main(String[] args) throws IOException { BufferedReader r = new BufferedReader(new InputStreamReader(System.in, "US-ASCII")); StringBuffer sb = new StringBuffer(); String line; while ((line = r.readLine()) != null) { sb.append(line); sb.append("\n"); } int initialLength = sb.length(); final String sequence = sb.toString().replaceAll(">.*\n|\n", ""); int codeLength = sequence.length(); String[] variants = { "agggtaaa|tttaccct", "[cgt]gggtaaa|tttaccc[acg]", "a[act]ggtaaa|tttacc[agt]t", "ag[act]gtaaa|tttac[agt]ct", "agg[act]taaa|ttta[agt]cct", "aggg[acg]aaa|ttt[cgt]ccct", "agggt[cgt]aa|tt[acg]accct", "agggta[cgt]a|t[acg]taccct", "agggtaa[cgt]|[acg]ttaccct" }; final Map<String, Integer> results = new HashMap<String, Integer>(); ThreadGroup tg = new ThreadGroup("regexWork"); for (String v : variants) { final String variant = v; new Thread(tg, v) { @Override public void run() { int count = 0; Matcher m = Pattern.compile(variant).matcher(sequence); while (m.find()) { count++; } results.put(variant, count); } }.start(); } Thread[] threads = new Thread[variants.length]; tg.enumerate(threads); for (Thread t : threads) { try { if (t != null) { t.join(); } } catch (InterruptedException e) { // noop } } tg.destroy(); for (String variant : variants) { System.out.println(variant + " " + results.get(variant)); } StringBuffer buf = new StringBuffer(); Matcher m = Pattern.compile("[WYKMSRBDVHN]").matcher(sequence); while (m.find()) { m.appendReplacement(buf, ""); buf.append(replacements.get(m.group())); } m.appendTail(buf); System.out.println(); System.out.println(initialLength); System.out.println(codeLength); System.out.println(buf.length()); } }
Mon, 21 Jan 2013 08:17:56 GMT MAKE: mv regexdna.java-5.java regexdna.java /usr/local/src/jdk1.7.0_11/bin/javac regexdna.java 0.56s to complete and log all make actions COMMAND LINE: /usr/local/src/jdk1.7.0_11/bin/java -server -XX:+TieredCompilation -XX:+AggressiveOpts regexdna 0 < regexdna-input5000000.txt PROGRAM OUTPUT: agggtaaa|tttaccct 356 [cgt]gggtaaa|tttaccc[acg] 1250 a[act]ggtaaa|tttacc[agt]t 4252 ag[act]gtaaa|tttac[agt]ct 2894 agg[act]taaa|ttta[agt]cct 5435 aggg[acg]aaa|ttt[cgt]ccct 1537 agggt[cgt]aa|tt[acg]accct 1431 agggta[cgt]a|t[acg]taccct 1608 agggtaa[cgt]|[acg]ttaccct 2178 50833411 50000000 66800214