Test | s | t | EQUALS | COMPARETO | Analysis |
1) equal substrings of a string | ABCD | ABCD | 43 ms 15 ms 15 ms | 7 ms 6 ms 6 ms | most likely due to extra typecast. equals's length check is also redundant here |
2) content different, length same | ABCDEFG | DEFGHIJ | 8 ms 7 ms 7 ms | 4 ms 4 ms 4 ms | probably due to typecast and ref check in equals |
3) content overlaps, length diff | ABCDEFG | ABCDEFGH | 5 ms 4 ms 4 ms | 9 ms 9 ms 11 ms | equals has a length check, compareTo doesnt |
4) content same | ABCDEFG | ABCDEFG | 23 ms 22 ms 23 ms | 9 ms 8 ms 9 ms | most likely because equals does extra typecast and ref check and length check |
5) content diff, length diff | ABCDEFG | abcedfgh | 5 ms 4 ms 4 ms | 4 ms 5 ms 8 ms | equals has a length check |
6) content diff at first byte, length same | ABCDEFG | aBCEDFG | 8 ms 9 ms 7 ms | 4 ms 5 ms 4 ms | equals has a countdown loop thus slower |
7) same reference | ABCDEFG | ABCDEFG | 4 ms 4 ms 5 ms | 11 ms 10 ms 11 ms | equals does a refernece check first |
Other possible test: