[
https://issues.apache.org/jira/browse/PIVOT-96?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Todd Volkert resolved PIVOT-96.
-------------------------------
Resolution: Fixed
> Java2D performance optimizations
> --------------------------------
>
> Key: PIVOT-96
> URL: https://issues.apache.org/jira/browse/PIVOT-96
> Project: Pivot
> Issue Type: Improvement
> Components: wtk
> Affects Versions: 1.1
> Reporter: Todd Volkert
> Assignee: Todd Volkert
> Priority: Minor
> Fix For: 1.2
>
> Attachments: diff.txt
>
>
> The following are some performance numbers from a sample run on my local
> machine. They're only meaningful when compared against one another (they
> shouldn't ever be compared to someone else's numbers or against future
> performance runs). They show the relative run times of paint(Graphics2D)
> calls in our skin classes, sorted by avg run time.
> <pre>
> Skin :: calls :: avg
> (ms) :: total (ms)
> pivot.wtk.skin.terra.TerraMenuPopupSkin :: 73 ::
> 0.000000 :: 0
> pivot.wtk.skin.terra.TerraPanoramaSkin :: 430 ::
> 0.000000 :: 0
> pivot.wtk.skin.terra.TerraRollupSkin :: 2562 ::
> 0.000000 :: 0
> pivot.wtk.skin.terra.TerraSplitPaneSkin :: 471 ::
> 0.000000 :: 0
> pivot.wtk.skin.terra.TerraFlowPaneSkin :: 34167 ::
> 0.000088 :: 3
> pivot.wtk.skin.terra.TerraFormSkin :: 565 ::
> 0.001770 :: 1
> pivot.wtk.skin.terra.TerraSliderSkin :: 559 ::
> 0.001789 :: 1
> pivot.wtk.skin.terra.TerraMenuBarSkin :: 176 ::
> 0.011364 :: 2
> pivot.wtk.skin.terra.TerraSplitPaneSkin$SplitterSkin :: 433 ::
> 0.011547 :: 5
> pivot.wtk.skin.terra.TerraSeparatorSkin :: 165 ::
> 0.012121 :: 2
> pivot.wtk.skin.terra.TerraCalendarSkin :: 156 ::
> 0.019231 :: 3
> pivot.wtk.skin.terra.TerraScrollPaneCornerSkin :: 291 ::
> 0.020619 :: 6
> pivot.wtk.skin.terra.TerraTabPaneSkin :: 368 ::
> 0.021739 :: 8
> pivot.wtk.skin.terra.TerraTablePaneSkin :: 863 ::
> 0.040556 :: 35
> pivot.wtk.skin.terra.TerraAccordionSkin :: 92 ::
> 0.043478 :: 4
> pivot.wtk.skin.terra.TerraSpinnerSkin$SpinButtonSkin :: 1476 ::
> 0.052168 :: 77
> pivot.wtk.skin.terra.TerraScrollBarSkin$HandleSkin :: 678 ::
> 0.058997 :: 40
> pivot.wtk.skin.terra.TerraSpinnerSkin :: 744 ::
> 0.060484 :: 45
> pivot.wtk.skin.terra.TerraCalendarSkin$DateButtonSkin :: 5818 ::
> 0.061705 :: 359
> pivot.wtk.skin.terra.TerraLabelSkin :: 36104 ::
> 0.066696 :: 2408
> pivot.wtk.skin.terra.TerraTextInputSkin :: 222 ::
> 0.072072 :: 16
> pivot.wtk.skin.ImageViewSkin :: 6488 ::
> 0.074445 :: 483
> pivot.wtk.skin.terra.TerraMeterSkin :: 804 ::
> 0.085821 :: 69
> pivot.wtk.skin.terra.TerraAlertSkin :: 124 ::
> 0.088710 :: 11
> pivot.wtk.skin.terra.TerraSliderSkin$ThumbSkin :: 555 ::
> 0.095495 :: 53
> pivot.wtk.skin.terra.TerraExpanderSkin$ShadeButtonSkin :: 256 ::
> 0.097656 :: 25
> pivot.wtk.skin.terra.TerraRollupSkin$RollupButtonSkin :: 1818 ::
> 0.097910 :: 178
> pivot.wtk.skin.terra.TerraScrollBarSkin :: 834 ::
> 0.100719 :: 84
> pivot.wtk.skin.terra.TerraScrollBarSkin$ScrollButtonSkin :: 1415 ::
> 0.108127 :: 153
> pivot.wtk.skin.terra.TerraAccordionSkin$PanelHeaderSkin :: 263 ::
> 0.133080 :: 35
> pivot.wtk.skin.terra.TerraExpanderSkin :: 266 ::
> 0.146617 :: 39
> pivot.wtk.skin.terra.TerraCheckboxSkin :: 3210 ::
> 0.151713 :: 487
> pivot.wtk.skin.terra.TerraMenuButtonSkin :: 591 ::
> 0.155668 :: 92
> pivot.wtk.skin.terra.TerraPromptSkin :: 19 ::
> 0.157895 :: 3
> pivot.wtk.skin.terra.TerraSpinnerSkin$SpinnerContentSkin :: 735 ::
> 0.161905 :: 119
> pivot.wtk.skin.terra.TerraListButtonSkin :: 134 ::
> 0.164179 :: 22
> pivot.wtk.skin.terra.TerraMenuBarItemSkin :: 664 ::
> 0.183735 :: 122
> pivot.wtk.skin.terra.TerraMenuSkin :: 69 ::
> 0.202899 :: 14
> pivot.wtk.skin.terra.TerraMenuItemSkin :: 238 ::
> 0.210084 :: 50
> pivot.wtk.skin.terra.TerraTabPaneSkin$TabButtonSkin :: 1041 ::
> 0.282421 :: 294
> pivot.wtk.skin.terra.TerraCalendarButtonSkin :: 340 ::
> 0.285294 :: 97
> pivot.wtk.skin.TextAreaSkin :: 71 ::
> 0.323944 :: 23
> pivot.wtk.skin.terra.TerraFrameSkin$FrameButtonSkin :: 122 ::
> 0.336066 :: 41
> pivot.wtk.skin.terra.TerraTableViewHeaderSkin :: 413 ::
> 0.341404 :: 141
> pivot.wtk.skin.terra.TerraBorderSkin :: 6200 ::
> 0.358226 :: 2221
> pivot.wtk.skin.terra.TerraPushButtonSkin :: 1300 ::
> 0.363846 :: 473
> pivot.wtk.skin.terra.TerraLinkButtonSkin :: 399 ::
> 0.385965 :: 154
> pivot.wtk.skin.terra.TerraScrollPaneSkin :: 1968 ::
> 0.462398 :: 910
> pivot.wtk.skin.terra.TerraRadioButtonSkin :: 565 ::
> 0.467257 :: 264
> pivot.wtk.skin.terra.TerraTreeViewSkin :: 427 ::
> 1.060890 :: 453
> pivot.wtk.skin.WindowSkin :: 802 ::
> 1.168329 :: 937
> pivot.wtk.skin.DisplaySkin :: 797 ::
> 1.193225 :: 951
> pivot.wtk.skin.terra.TerraListViewSkin :: 194 ::
> 1.324742 :: 257
> pivot.wtk.skin.terra.TerraTableViewSkin :: 465 ::
> 1.408602 :: 655
> </pre>
> There are a few things that jump off the page to me:
> 1) LabelSkin is called to paint a TON! This is because it's used in
> virtually every renderer. Its average run time is comparatively fast, but
> because it's so foundational, it's the one paint method that should be
> optimized to the tilt.
> 2) BorderSkin's paint is way costlier than you'd think it'd be relative to
> other skins (it's in the 80th percentile), and it's also called an awful lot.
> Can we find out what's taking so long and speed it up?
> 3) DisplaySkin and WindowSkin only fill in their background color, yet
> because they often do it on the entire clip rect (display always does, window
> always does when it's maximized), it's surprisingly expensive!
> ScrollPaneSkin has the same issue but to a lesser extent. Is there any known
> trick to speeding up this primitive graphics operation? I doubt it, but it's
> worth asking :)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.