Hi Laurent,
I am going to move forward with intent to get this version 4.2 into the
client repos as the version we will go into Feature Complete milestone
with. Let me know if there is a more recent version I should be looking at.
I'm about to do some test builds and check performance and run any tests
I have in my personal testing repos on it...
...jim
On 10/19/2015 7:06 AM, Laurent Bourgès wrote:
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