<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Now at GitHub.<br>
<br>
Thanks,<br>
On 8/24/2019 3:26 PM, Hernan Wilkinson wrote:
<blockquote
cite="mid:CAJAbP8gM-RTZsGwMyPMckYD1uiKvofmx5BbbHys4NYNLrOqQog@mail.gmail.com"
type="cite">
<div dir="ltr">Attach is a cs that make #withAllSubclasses use the
new #allSubclasses implementation.
<div><br>
</div>
<div>Hernan.</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sat, Aug 24, 2019 at 2:00
PM Hernan Wilkinson <<a moz-do-not-send="true"
href="mailto:hernan.wilkinson@10pines.com">hernan.wilkinson@10pines.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin: 0px 0px 0px
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<div>
<div dir="auto">Sorry, my bad, I was doing Behavior
allSubclasses instead of Object allSubaclasses.</div>
</div>
<div dir="auto">Thanks Juan for pointing that out</div>
<div><br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sat, 24 Aug 2019 at
13:09 Hernan Wilkinson <<a moz-do-not-send="true"
href="mailto:hernan.wilkinson@10pines.com"
target="_blank">hernan.wilkinson@10pines.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin: 0px 0px 0px
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<div dir="ltr">
<div>
<div>I'm having problems with the statistics...<br>
</div>
<div>I tried Andres' version of allSubclasses and to
my surprise it is slower than my version in the
Stack VM, that is the one I use for Live Typing,
but it is slightly faster with the JIT VM (only a
0.01%)</div>
<div>I don't see the 20% improvement that you
mentioned Andres, what are the number you got?</div>
<div>These are the numbers I get doing this, three
times:</div>
<div><br>
</div>
<div>Smalltalk garbageCollect.<br>
Time millisecondsToRun: [ 1000 timesRepeat: [
Behavior allSubclasses ]]. <br>
</div>
<div><br>
</div>
<div>JIT VM: </div>
<div>Breath first version: 169 170 171 </div>
<div>Depth first version: 181 179 180 </div>
</div>
<div><br>
</div>
<div>Stack VM:</div>
<div>
<div>
<div>Breath first version: 776 780 788</div>
<div>Depth first version: 749 749 751 </div>
</div>
<div><br>
</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sat, Aug 24, 2019
at 11:22 AM Juan Vuletich via Cuis-dev <<a
moz-do-not-send="true"
href="mailto:cuis-dev@lists.cuis.st"
target="_blank">cuis-dev@lists.cuis.st</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin: 0px 0px
0px 0.8ex; border-left: 1px solid rgb(204, 204,
204); padding-left: 1ex;">Uh, I hadn't seen you had
already attached code, and only answered to <br>
the comments. Apologies for that!<br>
<br>
This new version is much faster. Thanks! I
integrated it at GitHub, with <br>
a short comment about the iterative vs. recursive
choice.<br>
<br>
Cheers,<br>
<br>
-- <br>
Juan Vuletich<br>
<a moz-do-not-send="true"
href="http://www.cuis-smalltalk.org"
rel="noreferrer" target="_blank">www.cuis-smalltalk.org</a><br>
<a moz-do-not-send="true"
href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev"
rel="noreferrer" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a><br>
<a moz-do-not-send="true"
href="https://github.com/jvuletich"
rel="noreferrer" target="_blank">https://github.com/jvuletich</a><br>
<a moz-do-not-send="true"
href="https://www.linkedin.com/in/juan-vuletich-75611b3"
rel="noreferrer" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a><br>
@JuanVuletich<br>
<br>
<br>
<br>
On 8/23/2019 7:34 PM, Andres Valloud via Cuis-dev
wrote:<br>
> See attached for your reference.<br>
><br>
> On 8/22/19 05:36, Juan Vuletich wrote:<br>
>> On 8/21/2019 4:29 PM, Andres Valloud via
Cuis-dev wrote:<br>
>>> What do you see as "ugly"?<br>
>><br>
>> It is way more complicated than needed to
solve the problem. The <br>
>> problem is trivial, this code is not. And
there is no reason for <br>
>> this: class hierarchy depths shouldn't be
so deep to be a challenge <br>
>> for the call stack.<br>
>><br>
>> Hernán's code is only as complex as the
problem, without accidental <br>
>> complexity (in the Fred Brooks sense). It
is a clear explanation of <br>
>> the problem and the solution.<br>
>><br>
>> To me, code aesthetics is not only about
code being clear, and a good <br>
>> explanation of the problem and the
solution. It is also about being <br>
>> the best fit for the problem (including
human readers here: the <br>
>> system is the curricula). Sometimes,
performance requirements or <br>
>> space constraints require additional
complexity. Then, I see that <br>
>> extra complexity as pretty. This is of
course subjective, like any <br>
>> aesthetic judgment.<br>
>><br>
>>> One detail I don't see mentioned here:
the old code filled the <br>
>>> ordered collection breadth first
(before the set conversion), and so <br>
>>> it has limited execution stack depth.
The current code fills the <br>
>>> collection depth first, so its
execution stack depth is as deep as <br>
>>> the hierarchy tree.<br>
>>><br>
>>> Maybe there was a reason why the users
of allSubclasses were better <br>
>>> off with breadth first, before someone
put in asSet. Or perhaps <br>
>>> asSet was always there, I don't see why
that was beneficial.<br>
>>><br>
>>> In any case, I tried both the recursive
and (properly implemented) <br>
>>> iterative methods: breadth first is
>20% faster.<br>
>>><br>
>>> On 8/21/19 05:44, Juan Vuletich via
Cuis-dev wrote:<br>
>>>> Wow, thanks. The old code was slow
and ugly!<br>
>>>><br>
>>>> Integrating it.<br>
>>>><br>
>>>> Cheers,<br>
>>>><br>
>>>> -- <br>
>>>> Juan Vuletich<br>
>>>> <a moz-do-not-send="true"
href="http://www.cuis-smalltalk.org"
rel="noreferrer" target="_blank">www.cuis-smalltalk.org</a><br>
>>>> <a moz-do-not-send="true"
href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev"
rel="noreferrer" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a><br>
>>>> <a moz-do-not-send="true"
href="https://github.com/jvuletich"
rel="noreferrer" target="_blank">https://github.com/jvuletich</a><br>
>>>> <a moz-do-not-send="true"
href="https://www.linkedin.com/in/juan-vuletich-75611b3"
rel="noreferrer" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a><br>
>>>> @JuanVuletich<br>
>>>><br>
>>>><br>
>>>> On 8/21/2019 9:26 AM, Hernan
Wilkinson via Cuis-dev wrote:<br>
>>>>> Hi,<br>
>>>>> attached is a cs that changes
the implementation of <br>
>>>>> #allSubclasses and
#withAllSubclasses and generates performance <br>
>>>>> improvement drastically.<br>
>>>>> Just as a quick example, with
the current implementation:<br>
>>>>> Time millisecondsToRun: [ 100
timesRepeat: [Behavior <br>
>>>>> withAllSubclasses ]] 1140 .<br>
>>>>> With the proposed change:<br>
>>>>> Time millisecondsToRun: [ 100
timesRepeat: [Behavior <br>
>>>>> withAllSubclasses2 ]] . 73<br>
>>>>><br>
>>>>> In the type checker of
LiveTyping, checking Behavior goes from <br>
>>>>> 9.5 seconds to 5 seconds only
with that change.<br>
>>>>> One difference between the
current and proposed version, is that <br>
>>>>> the current returns a Set while
the proposed version returns an <br>
>>>>> OrderedCollection.<br>
>>>>> I looked carefully if that
could break something and it does not. <br>
>>>>> I've been using the image with
this new implementation and <br>
>>>>> everything works fine.<br>
>>>>><br>
>>>>> Juan, please take a look at it
and integrate it if you think it <br>
>>>>> is useful.<br>
>>>>> Hernan.<br>
>>>>><br>
>>>>> -- <br>
>>>>> *Hernán Wilkinson<br>
>>>>> Agile Software Development,
Teaching & Coaching*<br>
>>>>> *Phone: +54-011*-4893-2057<br>
>>>>> *Twitter: @HernanWilkinson*<br>
>>>>> *site: <a
moz-do-not-send="true"
href="http://www.10Pines.com" rel="noreferrer"
target="_blank">http://www.10Pines.com</a> <<a
moz-do-not-send="true"
href="http://www.10pines.com/" rel="noreferrer"
target="_blank">http://www.10pines.com/</a>>*<br>
>>>>> Address: Alem 896, Floor 6,
Buenos Aires, Argentina<br>
>>>><br>
>><br>
>><br>
<br>
<br>
-- <br>
Cuis-dev mailing list<br>
<a moz-do-not-send="true"
href="mailto:Cuis-dev@lists.cuis.st"
target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a moz-do-not-send="true"
href="https://lists.cuis.st/mailman/listinfo/cuis-dev"
rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr"
class="gmail-m_6489043597890905156m_5248608067857713503gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div><span style="font-family:
tahoma,sans-serif; font-size:
xx-small; border-collapse:
collapse;"><strong><span
style="font-size: 8pt;"><span><span
style="font-size:
small;"><font size="2"><span
style="font-weight:
normal;"><span
style="font-weight:
bold;">Hernán
Wilkinson</span><br>
Agile Software
Development,
Teaching &
Coaching</span></font></span></span></span></strong></span></div>
<div><span style="font-family:
tahoma,sans-serif; font-size:
xx-small; border-collapse:
collapse;"><strong><span
style="font-size: 8pt;"><span><span
style="font-size:
small;"><font size="2"><span
style="font-weight:
normal;">Phone:
+54-011</span></font></span></span></span></strong></span><font
size="2" face="tahoma,
sans-serif">-4893-2057</font></div>
<div><strong style="font-family:
tahoma,sans-serif; font-size:
xx-small;"><span
style="font-size: 8pt;"><span
style="font-size: small;"><font
size="2"><span
style="font-weight:
normal;">Twitter:
@HernanWilkinson</span></font></span></span></strong></div>
<div><span style="font-family:
tahoma,sans-serif; font-size:
xx-small; border-collapse:
collapse;"><strong><span
style="font-size: 8pt;"><span><span
style="font-size:
small;"><font size="2"><span
style="font-weight:
normal;">site: <a
moz-do-not-send="true" href="http://www.10pines.com/" style="color:
rgb(17, 65,
112);"
target="_blank">http://www.10Pines.com</a></span></font></span></span></span></strong></span></div>
<div><font face="tahoma,
sans-serif"><span
style="border-collapse:
collapse;">Address: Alem 896</span></font>,
Floor 6, Buenos Aires, Argentina</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
-- <br>
<div dir="ltr"
class="gmail-m_6489043597890905156gmail_signature">Sent from
a fat finger unaware device</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr" class="gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div><span style="font-family:
tahoma,sans-serif; font-size: xx-small;
border-collapse: collapse;"><strong><span
style="font-size: 8pt;"><span><span
style="font-size: small;"><font
size="2"><span
style="font-weight: normal;"><span
style="font-weight: bold;">Hernán
Wilkinson</span><br>
Agile Software Development,
Teaching & Coaching</span></font></span></span></span></strong></span></div>
<div><span style="font-family:
tahoma,sans-serif; font-size: xx-small;
border-collapse: collapse;"><strong><span
style="font-size: 8pt;"><span><span
style="font-size: small;"><font
size="2"><span
style="font-weight: normal;">Phone:
+54-011</span></font></span></span></span></strong></span><font
size="2" face="tahoma, sans-serif">-4893-2057</font></div>
<div><strong style="font-family:
tahoma,sans-serif; font-size: xx-small;"><span
style="font-size: 8pt;"><span
style="font-size: small;"><font
size="2"><span style="font-weight:
normal;">Twitter:
@HernanWilkinson</span></font></span></span></strong></div>
<div><span style="font-family:
tahoma,sans-serif; font-size: xx-small;
border-collapse: collapse;"><strong><span
style="font-size: 8pt;"><span><span
style="font-size: small;"><font
size="2"><span
style="font-weight: normal;">site: <a
moz-do-not-send="true"
href="http://www.10pines.com/"
style="color: rgb(17, 65,
112);" target="_blank">http://www.10Pines.com</a></span></font></span></span></span></strong></span></div>
<div><font face="tahoma, sans-serif"><span
style="border-collapse: collapse;">Address:
Alem 896</span></font>, Floor 6,
Buenos Aires, Argentina</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a>
<a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="moz-txt-link-freetext" href="https://github.com/jvuletich">https://github.com/jvuletich</a>
<a class="moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre>
</body>
</html>