fork(1) download
  1. /* http://stackoverflow.com/a/33809099/5290909 */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6. import java.util.regex.*;
  7.  
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. String text = "aaaaaaaaaaaaaa bbbbbbbbbbbbbb ccccccccccccccccc dddddddddddddddddddddddddddddd eeeeeeeeeeeeeeeeeeeeeee fffffffffffffffffffffffffffff";
  13. String pattern1 = ".*";
  14. String pattern2 = ".*+";
  15. Pattern kleene = Pattern.compile(pattern1);
  16. Pattern possessive = Pattern.compile(pattern2);
  17. Matcher mKleene = kleene.matcher(text);
  18. Matcher mPoss = possessive.matcher(text);
  19. int loops = 20000;
  20.  
  21.  
  22.  
  23. //Benchmark
  24. for (int j=0; j<3; j++)
  25. {
  26. for (int i=0; i<4; i++)
  27. {
  28. long before = System.nanoTime();
  29. for (int n=0; n<loops; n++)
  30. {
  31. mPoss.find();
  32. mPoss.reset();
  33. }
  34. long after = System.nanoTime();
  35. if (j>0)
  36. {
  37. System.out.println("Possessive : " + (after-before)/1e6 + " ms");
  38. }
  39. }
  40. for (int i=0; i<4; i++)
  41. {
  42. long before = System.nanoTime();
  43. for (int n=0; n<loops; n++)
  44. {
  45. mKleene.find();
  46. mKleene.reset();
  47. }
  48. long after = System.nanoTime();
  49. if (j>0)
  50. {
  51. System.out.println("Kleene : " + (after-before)/1e6 + " ms");
  52. }
  53. }
  54. }
  55. }
  56. }
Success #stdin #stdout 2.34s 320576KB
stdin
Standard input is empty
stdout
Possessive : 94.634978 ms
Possessive : 93.294042 ms
Possessive : 92.070452 ms
Possessive : 92.378645 ms
Kleene  : 91.32518 ms
Kleene  : 91.753105 ms
Kleene  : 91.432992 ms
Kleene  : 91.532512 ms
Possessive : 92.358249 ms
Possessive : 92.007488 ms
Possessive : 92.357208 ms
Possessive : 91.94661 ms
Kleene  : 91.912068 ms
Kleene  : 91.608612 ms
Kleene  : 91.48735 ms
Kleene  : 91.788244 ms