<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Dec 24, 2013 at 1:35 PM, Nicolas Cellier <span dir="ltr">&lt;<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br><div dir="ltr"><div><div><div><div><div>Sure, I agree but this would require platform specific code...<br>As I developped in the other thread, an alternative is to use native libraries where possible - that is when they perform an equivalent job (It would be Quartz or something like that for me).<br>


Such platform specific support will be harder to obtain, because it requires knowledge of VM plugin+external library or low level assembler...<br>Plus the pain of diving into historical VM architecture (specifically in BitBlt, 
it&#39;s not that easy to get the full picture when you did not participate 
to the development - like me).<br></div>I note that there is plenty of work required in this area, sort of technical debt. For example my MacOSX VMs do not support the little endian image formats yes (those with negative depth) which could be surprising if we didn&#39;t knew historical roots...<br>


</div>^Display supportedDisplayDepths<br><br>So, in a word, such platform specific support can certainly provide great rewards, but with significative investments. <br></div>On the other hand, these little tricks are like harvesting low hanging fruits.<br>


They are made of pure C^H slang, thus valid on every platform which does not yet provide specific accelerated support.<br></div><div>I&#39;m lazy and just musing, so the fastest ROI is appealing.<br></div><div><br></div>

Remember my little text composition/display benchs?<br>
<br>    | text canvas m1 |<br>    canvas := FormCanvas extent:  569@399 depth: 32.<br>  text := Compiler evaluate: (FileStream fileNamed: &#39;<a href="http://text.st" target="_blank">text.st</a>&#39;) contentsOfEntireFile.<br>

    m1 := TextMorph new.<br>
    m1 text: text textStyle: TextStyle default.<br>    m1 wrapFlag: true.<br>    m1 extent: 569@9999999.<br>   MessageTally spyOn: [ Time millisecondsToRun: [100 timesRepeat: [<br>        m1 drawOn: canvas]]] <br></div> Interpreter VM 4.10.10 Before bit hacks: 1425 1411 1403<br>


<div> Interpreter VM After bit hacks: 1152 1173<br><br></div><div>15 to 20% less, it&#39;s not really impressive, but the hurdle is low, just two bit-hacks applied to rules 20 24 30 &amp; 31<br></div></div></blockquote><div>

<br></div><div>On the contrary.  That kind of speed-up in a mature tuned numerical algorithm is impressive.  Thanks!</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div></div></div><div class="gmail_extra">

<br><br><div class="gmail_quote">2013/12/24 tim Rowledge <span dir="ltr">&lt;<a href="mailto:tim@rowledge.org" target="_blank">tim@rowledge.org</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<br>
If you (or anyone else, of course) are interested in really speeding up bitblt, it would likely be worth looking at the ARM specific speedups Ben Avison did for the PI. (Look in platforms/Cross/plugins/BitBltPlugin) and seeing if similar tricks could be done with the assorted media instructions in current i7 etc cpus.<br>



<br>
tim<br>
--<br>
tim Rowledge; <a href="mailto:tim@rowledge.org" target="_blank">tim@rowledge.org</a>; <a href="http://www.rowledge.org/tim" target="_blank">http://www.rowledge.org/tim</a><br>
Experience is something you don&#39;t get until just after you need it.<br></blockquote></div></div></blockquote></div><br>-- <br>best,<div>Eliot</div>
</div></div>