On Sat, May 14, 2011 at 01:13:29PM +0200, Nicolas Cellier wrote:
2011/5/14 St?phane Ducasse <stephane.ducasse@inria.fr>:
I accelerated raisedTo:modulo: a bit with a primitive (http://bugs.squeak.org/view.php?id=7120) but that's not enough Nicolas
do you know why it was not integrated? It is a good candidate to check the build system of the VM and their evolution. Igor (I gave the windows distribution) to the arnaud so I hope that soon we will get a new windows slave for jenkins.
Stef
Don't know.
Nicolas, I added your LargeIntegersPlugin>>primMontgomeryTimes:modulo:mInvModB: in SqS/VMMaker/VMMaker-dtl.233 (interpreter VM only, not Cog), and added some notes to http://bugs.squeak.org/view.php?id=7120. It compiles and runs correctly on both 32 and 64 bit platforms, but I cannot confirm the performance gain, so examples or tests would be helpful. On my system I built 32 and 64-bit versions, and I can confirm that the primitive runs and that the results are as expected: 12345678907 raisedTo: 3 modulo: 12345678917 ==> 12345677917 12345678907 montgomeryRaisedTo: 3 modulo: 12345678917 ==> 12345677917 But performance is not good in the example I came up with. On an interpreter VM (not Cog): Time millisecondsToRun: [100000 timesRepeat: [12345678907 raisedTo: 3 modulo: 12345678917]] ==> 633 Time millisecondsToRun: [100000 timesRepeat: [12345678907 montgomeryRaisedTo: 3 modulo: 12345678917]] ==> 1415
Don't know. I also have my modest bitShift: improvments pending (http://bugs.squeak.org/view.php?id=7109). Maybe I haven't performed enough tests to assert the performance gain. The changes are reliable, I run a VM with both improvments without crash for months.
I have not looked at http://bugs.squeak.org/view.php?id=7109 yet but will do so. Dave