RFR: AARCH64: optimize string compare intrinsic

Dmitrij Pochepko dmitrij.pochepko at bell-sw.com
Sat Apr 28 18:29:09 UTC 2018


Hi all,

please review patch for  8202326: AARCH64: optimize string compare intrinsic

This patch introduces string compareTo stub, which uses large loops with 
prefetch instructions. Stub is called for long strings and improves 
String::compareTo up to 4 times on systems without hardware prefetching 
(ThunderX) and up to 2 times on systems with hardware prefetching 
(ThunderX2). Also inlined code is re-arranged with more optimal 
pipelining, which helps in-order systems, so small strings are also 
slightly improved.
There are no noticeable regressions according to benchmark results.

I created benchmark to measure improvement: 
http://cr.openjdk.java.net/~dpochepk/8202326/StringCompareBench.java

Execution matrix is large and can be seen here: 
http://cr.openjdk.java.net/~dpochepk/8202326/str_compare.xls

Raw results are *.txt files here: 
http://cr.openjdk.java.net/~dpochepk/8202326/

webrev: http://cr.openjdk.java.net/~dpochepk/8202326/webrev.01/

CR: https://bugs.openjdk.java.net/browse/JDK-8202326

testing: I run jtreg hotspot tests: compiler/* gc/* runtime/* using 
fastdebug build and found no new failures. I also run long "bruteforce" 
test which checks all combinations of different character index for all 
strings up to size 512: 
http://cr.openjdk.java.net/~dpochepk/8202326/StrCmpTest.java


Additional note: this patch depends on zip2 instruction encoding fix: 
JDK-8202395

Thanks,

Dmitrij

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20180428/3c344f03/attachment.html>


More information about the hotspot-compiler-dev mailing list