The results:
Implementation | User Time |
---|---|
(Baseline) String.indexOf(...) === 0 | 1m21.828s |
String.beginsWith(...) | 1m10.723s |
beginsWith(str, prefix) | 1m11.457s |
Binary search | 0m01.713s |
Now, that's a nice result.
For completeness, my updated detailed profile results:
Statistical profiling result from /home/starr/svn/plainsight-addon/lib/v8.log, (1550 ticks, 0 unaccounted, 0 excluded).
[Shared libraries]:
ticks total nonlib name
433 27.9% 0.0% /usr/lib/libv8.so.3.14.5
16 1.0% 0.0% /lib/x86_64-linux-gnu/libc-2.17.so
13 0.8% 0.0% 7fff58bfe000-7fff58c00000
1 0.1% 0.0% /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.18
1 0.1% 0.0% /usr/bin/nodejs
1 0.1% 0.0% /lib/x86_64-linux-gnu/ld-2.17.so
[JavaScript]:
ticks total nonlib name
115 7.4% 10.6% LazyCompile: Object.defineProperty.value /home/starr/svn/plainsight-addon/lib/reversehuffman.js:28
83 5.4% 7.6% LazyCompile: huffmantree /home/starr/svn/plainsight-addon/lib/textutils.js:220
71 4.6% 6.5% LazyCompile: *InsertionSort native array.js:764
68 4.4% 6.3% LazyCompile: *nextChars /home/starr/svn/plainsight-addon/lib/reversehuffman.js:170
54 3.5% 5.0% LazyCompile: *binaryInsertionPoint /home/starr/svn/plainsight-addon/lib/textutils.js:20
53 3.4% 4.9% Stub: CompareICStub
47 3.0% 4.3% Stub: FastNewClosureStub
41 2.6% 3.8% LazyCompile: *sort native array.js:741
39 2.5% 3.6% LazyCompile: *reduce native array.js:1381
37 2.4% 3.4% Stub: CompareICStub {2}
35 2.3% 3.2% LazyCompile: *self.push /home/starr/svn/plainsight-addon/lib/priority_queue.js:129
35 2.3% 3.2% LazyCompile: *QuickSort native array.js:793
34 2.2% 3.1% LazyCompile: *self.pop /home/starr/svn/plainsight-addon/lib/priority_queue.js:57
31 2.0% 2.9% Builtin: A builtin from the snapshot
The function nextChars is where I implemented the binary search.
No comments:
Post a Comment