Dear all,<br><br>Here is my first pisces (beta) patch (webrev):<br><a href="http://jmmc.fr/~bourgesl/share/java2d-pisces/webrev-1/">http://jmmc.fr/~bourgesl/share/java2d-pisces/webrev-1/</a><br><br>I succeed in fixing memory usage by having only 1 pisces instance (Renderer, stroker, iterator ...) per RendererContext (GC friendly).<br>
<br>Impressive results between small and large drawings:<br><br>



        
        
        
        
        <style>body, div, table, thead, tbody, tfoot, tr, th, td, p { font-family: "Liberation Sans"; font-size: x-small; }</style>
        

<table border="0" cellspacing="0" cols="7" frame="VOID" rules="NONE">
        <colgroup><col width="220"><col width="146"><col width="146"><col width="146"><col width="146"><col width="146"><col width="146"></colgroup>
        <tbody>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="26" width="220" align="LEFT"><font face="DejaVu Sans"><br></font></td>
                        <td style="border:1px solid rgb(0,0,0)" colspan="3" width="438" align="CENTER"><font face="DejaVu Sans">dc_boulder_2013-13-30-06-13-17.ser</font></td>
                        <td style="border:1px solid rgb(0,0,0)" colspan="3" width="438" align="CENTER"><font face="DejaVu Sans">dc_shp_alllayers_2013-00-30-07-00-47.ser</font></td>
                        </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="24" align="CENTER"><font face="DejaVu Sans">JVM</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">1T</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">2T</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">4T</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">1T</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">2T</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">4T</font></td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="26" align="LEFT"><font face="DejaVu Sans">OpenJDK8 Patch Beta</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">2556</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">3190</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">5106</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">22952</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">26552</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">46010</font></td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="26" align="LEFT"><font face="DejaVu Sans">OpenJDK8 Ref</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">3982</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">4852</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">8842</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">55889</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">77691</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">141981</font></td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="26" align="LEFT"><font face="DejaVu Sans">Oracle JDK8 (ductus)</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">1894</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">3905</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">7485</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">20911</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">39297</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="CENTER"><font face="DejaVu Sans">103392</font></td>
                </tr>
                <tr>
                        <td height="24" align="LEFT"><font face="DejaVu Sans"><br></font></td>
                        <td align="CENTER"><font face="DejaVu Sans"><br></font></td>
                        <td align="CENTER"><font face="DejaVu Sans"><br></font></td>
                        <td align="CENTER"><font face="DejaVu Sans"><br></font></td>
                        <td align="CENTER"><font face="DejaVu Sans"><br></font></td>
                        <td align="CENTER"><font face="DejaVu Sans"><br></font></td>
                        <td align="CENTER"><font face="DejaVu Sans"><br></font></td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="33" align="LEFT"><font face="DejaVu Sans" size="4">Patch / REF</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">155,79%</font></b></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">152,10%</font></b></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">173,17%</font></b></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">243,50%</font></b></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">292,60%</font></b></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">308,59%</font></b></td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="33" align="LEFT"><font face="DejaVu Sans" size="4">Patch / Ductus</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><font face="DejaVu Sans" size="4">74,10%</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">122,41%</font></b></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">146,59%</font></b></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><font face="DejaVu Sans" size="4">91,11%</font></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">148,00%</font></b></td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT"><b><font face="DejaVu Sans" size="4">224,72%</font></b></td>
                </tr>
        </tbody>
</table>
<br>Low mem tests: -Xmx128m to maximize GC overhead<br><br><a href="http://jmmc.fr/~bourgesl/share/java2d-pisces/MapBench_PATCH_V1.log">http://jmmc.fr/~bourgesl/share/java2d-pisces/MapBench_PATCH_V1.log</a> (beta)<br><a href="http://jmmc.fr/~bourgesl/share/java2d-pisces/MapBench_REF.log">http://jmmc.fr/~bourgesl/share/java2d-pisces/MapBench_REF.log</a><br>
<a href="http://jmmc.fr/~bourgesl/share/java2d-pisces/MapBench_OracleDuctus.log">http://jmmc.fr/~bourgesl/share/java2d-pisces/MapBench_OracleDuctus.log</a><br><br>Andrea, I modify the MapBench to perform explicit GC between tests (+ creating graphics / image out of the test loop):<br>
<a href="http://jmmc.fr/~bourgesl/share/java2d-pisces/MapBench/">http://jmmc.fr/~bourgesl/share/java2d-pisces/MapBench/</a><br><br>Note: these results were performed with the AAShapePipe proposed patch (small impact).<br>
<br>Is there somebody interested to enhance Pisces renderer code and support me as sponsor ?<br><br>Look at PiscesConst to enable/disable several flags (useThreadLocal, doChecks to check array cleanup ...); please ask me if you have any question.<br>
<br>TBD: <br>- cleanup / statistics / profile cpu performance ... <br>- enhance Dasher / Stroker to deal with shape out or partially out the clipping area.<br><br>Cheers,<br>Laurent<br><br>