[OpenJDK Rasterizer] Marlin #4
Laurent Bourgès
bourges.laurent at gmail.com
Mon Oct 19 14:06:37 UTC 2015
Hi Jim,
Here is the new webrev:
http://cr.openjdk.java.net/~lbourges/marlin/marlin-s4.2/
I added the OffHeapArray class used by Renderer and now by MarlinCache to
store rowAAChunk data.
Moreover I performed other small optimizations (heuristics,
Renderer.addLine() split in 2 methods) and many benchmarks to tune the new
approach.
Could you review that patch, please ?
Here are my last results:
Test Threads Ops Med Pct95 Avg StdDev Min Max TotalOps *CircleTests.ser *
*1* *172* *61.064* *61.311* *61.079* *0.131* *60.823* *61.67* *172*
*EllipseTests-fill-false.ser
* *1* *37* *278.548* *278.757* *278.557* *0.112* *278.362* *278.868*
*37* *EllipseTests-fill-true.ser
* *1* *25* *436.323* *436.866* *436.403* *0.27* *436.026* *437.318*
*25* dc_boulder_2013-13-30-06-13-17.ser
1 114 91.316 91.75 91.355 0.279 90.803 92.505 114
dc_boulder_2013-13-30-06-13-20.ser
1 219 47.84 48.182 47.854 0.175 47.498 48.783 219
dc_shp_alllayers_2013-00-30-07-00-43.ser
1 265 39.432 39.61 39.433 0.108 39.21 40.052 265
dc_shp_alllayers_2013-00-30-07-00-47.ser
1 25 769.704 771.488 769.849 1.096 767.903 772.967 25
dc_spearfish_2013-11-30-06-11-15.ser
1 820 12.766 13.028 12.798 0.128 12.583 13.232 820
dc_spearfish_2013-11-30-06-11-19.ser
1 1637 6.413 6.613 6.438 0.067 6.375 6.777 1637
dc_topp:states_2013-11-30-06-11-06.ser
1 869 12.059 12.13 12.063 0.038 11.983 12.26 869
dc_topp:states_2013-11-30-06-11-07.ser
1 1421 7.391 7.453 7.392 0.023 7.329 7.52 1421 test_z_625k.ser 1 68 152.821
153.589 152.862 0.358 152.135 153.775 68
These are great results! And they are much easier to read with the tables
> (which seem to get lost in my reply, oops!).
>
Thanks.
> If it is just the dashing results I can believe that as Ductus does a
> pretty good job of minimizing the number of segments in its stroked output
> paths. The losses are pretty small in that case so we are getting pretty
> close to being able to deprecate Ductus at some point which would be
> awesome (still a bit of reliability testing "in the wild" before we can
> actually switch full time, though)...
>
As I mentioned few month ago, the Stroker can be improved to reduce the
number of generated segments related to caps & miter joins ie ignore
collinear edges. Moreover, it can be notably worth for dashed polygons
(many caps) or very complex polylines (many joins).
Thanks for your time,
Laurent
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/graphics-rasterizer-dev/attachments/20151019/4f61b9de/attachment-0001.html>
More information about the graphics-rasterizer-dev
mailing list