There are following regressions observed in build 8.0-graphics-scrum-h458 in Controls.TextField.kb-text100k:
WinXP: -54% (-543 fps)
MacMid: -65% (-565 fps)
8.0-graphics-scrum-h458 contains the following fixes:
1. RT-23074: Support bi-directional text in controls + RT-23075: Support complex characters in controls ��� leifs / detail
2. Fix junit (RT-21683) ��� Felipe Heidrich / detail
3. RT-26751: Enhance JavaFX launcher to allow Java launcher to directly launch JavaFX application jars ��� ddehaven / detail
4. Fixed bad apostrophe in doc comment. ��� rbair / detail
Looks like the regression is caused by first change.
I ran TextField benchmark for 40 seconds and collected JPA profile.
Java profile shows that almost 87% of time (35.5 seconds) is now spent
in java.text.Bidi.<init> and in particular in sun.text.bidi.BidiBase.getDirProps().
Here is the stack trace:
+- 36.228 (88%) com.sun.javafx.scene.control.behavior.TextInputControlBehavior.callAction(java.lang.String)
| +- 36.175 (88%) com.sun.javafx.scene.control.behavior.TextInputControlBehavior.nextCharacterVisually(boolean)
| | +- 35.588 (87%) com.sun.javafx.scene.control.behavior.TextInputControlBehavior.getBidi()
| | | +- 35.580 (87%) java.text.Bidi.<init>(java.lang.String, int)
| | | | +- 33.732 (82%) sun.text.bidi.BidiBase.<init>(char[], int, byte[], int, int, int)
| | | | | +- 33.726 (82%) sun.text.bidi.BidiBase.setPara(char[], byte, byte[])
| | | | | | +- 33.597 (82%) sun.text.bidi.BidiBase.getDirProps()
| | | | | | | +- 6.911 (17%) sun.text.normalizer.UBiDiProps.getClass(int)
| | | | | | | +- 3.724 (9%) sun.text.normalizer.UTF16.charAt(char[], int, int, int)
Steps to run the benchmark:
> cd JFX_WS/tests/performance/Controls/
> ant
> java -Djavafx.animation.fullspeed=true
-cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/Controls.jar;../FXBenchmark/dist/FXBenchmark.jar;../../../import/benchmarks-2.1.1/benchmarks-2.1.1.jar"
jrockit.bm.Main controls.bm.TextFieldBenchmark -i 1 -wt 0 -tr 30 -test fixedtext -textlen 100000 -debug false