http://gwt-code-reviews.appspot.com/1382801/diff/5008/dev/core/src/com/google/gwt/dev/resource/impl/DefaultFilters.java
File dev/core/src/com/google/gwt/dev/resource/impl/DefaultFilters.java
(right):

http://gwt-code-reviews.appspot.com/1382801/diff/5008/dev/core/src/com/google/gwt/dev/resource/impl/DefaultFilters.java#newcode104
dev/core/src/com/google/gwt/dev/resource/impl/DefaultFilters.java:104:
private static boolean isDefaultExcluded(String path) {
Regex is slower.
When DefaultFiltersTest.testNonEmptyFilters() runs 10000 times, it
requires 27500ms with regex and 11000ms with simple string checks.

http://gwt-code-reviews.appspot.com/1382801/diff/5008/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java
File dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java
(right):

http://gwt-code-reviews.appspot.com/1382801/diff/5008/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java#newcode37
dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java:37:
this.pathParts = path.split("/");
Yes, pre-compiling RE gives some gain.
If we speak about absolute performance, it is possible to optimize this
specific case of splitting by "/" even more, with manual implementation.

reCompile: 15874.627362
rePreComp: 13843.915078
manual: 3683.38462

for following performance test.


  public void test_perf() throws Exception {
    int count = 10000000;
    String path = "a/bb/ccc/dddd/eeeee/ffffff";
    {
      long start = System.nanoTime();
      for (int i = 0; i < count; i++) {
        Strings.splitPath0(path);
      }
      System.out.println("reCompile: " + (System.nanoTime() - start) /
1000000.0);
    }
    {
      long start = System.nanoTime();
      for (int i = 0; i < count; i++) {
        Strings.splitPath(path);
      }
      System.out.println("rePreComp: " + (System.nanoTime() - start) /
1000000.0);
    }
    {
      long start = System.nanoTime();
      for (int i = 0; i < count; i++) {
        Strings.splitPath2(path);
      }
      System.out.println("manual: " + (System.nanoTime() - start) /
1000000.0);
    }
  }

http://gwt-code-reviews.appspot.com/1382801/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to