<div dir="ltr">interesting I have a similar behavior with your experiment<div>with distance variations globally between 16 and 25</div><div><br></div><div>cheers,</div><div>cip</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 7, 2017 at 6:51 AM, Ben Coman <span dir="ltr"><<a href="mailto:btc@openinworld.com" target="_blank">btc@openinworld.com</a>></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"><br>Try the following experiment.<div>Copy Object>>shallowCopy to Object>>monitorShallowCopy</div><div>and after the pragma add...</div><div>    <span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>Smalltalk at: #Monitor put: #Failed.</div><div><br></div><div><div><br></div></div><div><div>Then in Playground...</div><div><div>    lastfail := 0.</div><div>    1 to: 100000 do: [ :n |  </div><div><span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>|src copy|</div><div><span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>src := Array new: n.</div><div><span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>Smalltalk at: #Monitor put: #Succeeded.</div><div><span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>copy := src monitorShallowCopy.</div><div><span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>(Smalltalk at: #Monitor) == #Failed ifTrue: [</div><div><span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">               </span>Transcript crShow: n; tab; show: n - lastfail. </div><div><span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">            </span>lastfail := n.</div><div><span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">              </span>].</div><div><span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>].</div><div><br></div><div>Produces the following interesting result....</div><div><br></div><div>RUN1...</div><div><br></div><div>65559<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>65559</div><div>67670<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>2111</div><div>67685<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>15</div><div>67700<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>67715<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>67730<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>...</div><div>69860<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>15</div><div>69875<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>69890<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>69905<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>72334<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>2429</div><div>72348<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>14</div><div>72362<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>72376<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>72390<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>...</div><div>74854<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>14</div><div>74868<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>74882<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>74896<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>77681<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>2785</div><div>77694<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>13</div><div>77707<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>77720<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>77733<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>...</div><div>80619<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>13</div><div>80632<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>80645<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>80658<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>83894<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>3236</div><div>83906<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>12</div><div>83918<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>83930<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>83942<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>...</div><div>87338<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>12</div><div>87350<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>87362<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>87374<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>91189<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>3815</div><div>91200<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>11</div><div>91211<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>91222<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>91233<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>...</div><div>95292<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>11</div><div>95303<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>95314<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>95325<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>99867<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>4542</div><div>99877<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>10</div><div>99887<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99897<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99907<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99917<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99927<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99937<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99947<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99957<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99967<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99977<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99987<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99997<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div></div><div><br></div><div><br></div><div>RUN2...</div><div><br></div><div><div>67660<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>67660</div><div>67675<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>15</div><div>67690<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>67705<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>67720<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>....</div><div>69865<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>15</div><div>69880<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>69895<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>69910<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>15</div><div>72324<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>2414</div><div>72338<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>14</div><div>72352<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>72366<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>72380<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>....</div><div>74858<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>14</div><div>74872<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>74886<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>74900<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>14</div><div>77685<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>2785</div><div>77698<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>13</div><div>77711<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>77724<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>77737<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>....</div><div>80623<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>13</div><div>80636<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>80649<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>80662<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>13</div><div>83898<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>3236</div><div>83910<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>12</div><div>83922<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>83934<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>83946<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>...</div><div>87342<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>12</div><div>87354<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>87366<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>87378<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>12</div><div>91193<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>3815</div><div>91204<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>11</div><div>91215<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>91226<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>91237<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>...</div><div>95285<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>11</div><div>95296<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>95307<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>95318<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>11</div><div>99871<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>4553</div><div>99881<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>10</div><div>99891<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99901<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99911<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99921<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99931<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99941<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99951<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99961<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99971<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99981<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div><div>99991<span class="m_-1223535055506938544gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>10</div></div><div><br></div><div>This is with </div><div>* 60375-64.zip</div><div>* cog_win64x64_squeak.stack.<wbr>spur_201702021058.zip</div><div>* Windows 7 Professional SP1</div><div><br></div><div>cheers -ben</div><div><br></div><div><br></div>On Tue, Feb 7, 2017 at 10:15 AM, Ciprian Teodorov <<a href="mailto:ciprian.teodorov@gmail.com" target="_blank">ciprian.teodorov@gmail.com</a>> wrote:<br>><br>>  <br>> Thanks Ben,<br>><br>> the <primitive: 148> seems to fail something like 4-5 % with my bench (osx 10.11.6, the latest Pharo/Cog)<br>><br>>     # of copy calls        Failing primitive 148      Failing rate<br>> 1710 77 4,50%<br>> 3049 133 4,36%<br>> 51562 2947 5,72%<br>><br>> and it does not seem to fail at all with something like:<br>><br>> 1 to: 1000 do: [:i |<br>>     (1 to: 100000) asArray copy.<br>> ]<br>><br>> cheers<br>><br>> On Tue, Feb 7, 2017 at 12:42 AM, Ben Coman <<a href="mailto:btc@openinworld.com" target="_blank">btc@openinworld.com</a>> wrote:<br>>><br>>>  <br>>><br>>><br>>> On Tue, Feb 7, 2017 at 3:05 AM, Ciprian Teodorov <<a href="mailto:ciprian.teodorov@gmail.com" target="_blank">ciprian.teodorov@gmail.com</a>> wrote:<br>>>><br>>>>  <br>>>> It is strange, to me it seems like the <primitive: 148> fails back to the smalltalk implementation (<a href="http://bit.ly/2kjYdHv" target="_blank">http://bit.ly/2kjYdHv</a>).<br>>>> However when trying to copy a small array like #(1 2 3 4) copy I cannot step-into the #shallowCopy<br>>>> nor when I try to copy a big array like   (1 to: 100000) asArray copy<br>>>><br>>>> However, when I do cmd+. while running my bench the debugger stops in the shallowCopy<br>>>><br>>>> is this a debugger thing ?<br>>><br>>><br>>> To check, can you add a transcript output next line after the primitive pragma?<br>>> cheers -ben<br>>><br>>>  <br>>>><br>>>> or the primitive really fails ? -- which can explain the > 2.6 slowdown<br>>>><br>>>> best regards,<br>>>> cip<br>>>><br>>>> On Mon, Feb 6, 2017 at 7:36 PM, Ciprian Teodorov <<a href="mailto:ciprian.teodorov@gmail.com" target="_blank">ciprian.teodorov@gmail.com</a>> wrote:<br>>>>><br>>>>> Thanks guys I'll will try with the latest version and I'll come back with updates.<br>>>>><br>>>>><br>>>>> On Sun, Feb 5, 2017 at 8:25 PM, tim Rowledge <<a href="mailto:tim@rowledge.org" target="_blank">tim@rowledge.org</a>> wrote:<br>>>>>><br>>>>>><br>>>>>><br>>>>>> > On 05-02-2017, at 5:08 AM, Clément Bera <<a href="mailto:bera.clement@gmail.com" target="_blank">bera.clement@gmail.com</a>> wrote:<br>>>>>> ><br>>>>>> > I remember there was a discussion about that somewhere but I can't find it. I cc vm-dev they may have a clue.<br>>>>>> ><br>>>>>> > When copying a pointer object in 64 bits instead of 32 bits, you need to copy twice many data, so it is going to be slower in any case.<br>>>>>><br>>>>>> Err, not really. Probably. Assuming you have a 64 bit cpu etc, of course. And dependent on details of the memory architecture outside the cpu too - after all many systems do not need the memory chip organisation to match the cpu word size, having multiple lanes, burst read cache loading, even heterogenous regions (I suspect mostly in embedded systems for that, but y’never know).<br>>>>>><br>>>>>> Yes, you’re moving twice as much stuff but it will still be a single read & write per word. After that you’re at the mercy of cache lines, write buffers, chip specs and not to mention the Hamsters.<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>>>>>> We can rescue a hostage or bankrupt a system. Now, what would you like us to do?<br>>>>>><br>>>>>><br>>>>><br>>>>><br>>>>><br>>>>> --<br>>>>> Dr. Ciprian TEODOROV<br>>>>> Enseignant-chercheur<br>>>>> ENSTA Bretagne<br>>>>><br>>>>> tél : 06 08 54 73 48<br>>>>> mail : <a href="mailto:ciprian.teodorov@gmail.com" target="_blank">ciprian.teodorov@gmail.com</a><br>>>>> <a href="http://www.teodorov.ro" target="_blank">www.teodorov.ro</a><br>>>><br>>>><br>>>><br>>>><br>>>> --<br>>>> Dr. Ciprian TEODOROV<br>>>> Enseignant-chercheur<br>>>> ENSTA Bretagne<br>>>><br>>>> tél : 06 08 54 73 48<br>>>> mail : <a href="mailto:ciprian.teodorov@gmail.com" target="_blank">ciprian.teodorov@gmail.com</a><br>>>> <a href="http://www.teodorov.ro" target="_blank">www.teodorov.ro</a><br>>>><br>>><br>>><br>><br>><br>><br>> --<br>> Dr. Ciprian TEODOROV<br>> Enseignant-chercheur<br>> ENSTA Bretagne<br>><br>> tél : 06 08 54 73 48<br>> mail : <a href="mailto:ciprian.teodorov@gmail.com" target="_blank">ciprian.teodorov@gmail.com</a><br>> <a href="http://www.teodorov.ro" target="_blank">www.teodorov.ro</a><br>><br></div></div>
<br></blockquote></div><br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><br></div></div></div>
</div></div>