Naive number questions
John M McIntosh
johnmci at smalltalkconsulting.com
Tue Nov 2 22:10:26 UTC 2004
a) Well the large positive integer 100,000,000,000 that x is
incrementing to becomes expensive to use.
b) The Java solution just uses 64 bit integers, which on some platforms
might have hardware support.
Now if the Java folks could give us oh say a few % of the money they
spent on Java, say a few tens of million, then we too
could develop a faster Squeak VM. Besides it is a JIT and those
millions produce native instructions.
c) By using timesRepeat: you actually are doing message sends to do the
increment. That's very very expensive, take a look at
the bytecodes that are compiled...
Try
Time millisecondsToRun: [
| x |
x := 0.
0 to: 1000 do: [:i |
0 to: 100000000 do: [: j|
x _ x + 1.
]]]
That produces a much more performance friendly bytecode sequence, and
matchs more the spirit of the Java code.
PS did you try a VW version? Also try using floating point too and see
what happen.
On Nov 2, 2004, at 12:41 PM, stéphane ducasse wrote:
> hi guys
>
> one guy in the french mailing llist posted that:
>
> In Java
>
> long x = 0;
> long timeStart = 0;
>
> timeStart = System.currentTimeMillis();
>
> for (int i = 0; i < 1000; i++) {
> for (int j = 0; j < 100000000; j++) {
> x = x + 1;
> }
> }
>
> timeStart = System.currentTimeMillis() - timeStart;
> System.out.println(new Long(timeStart).toString());
> System.out.println(new Long(x).toString());
>
> ==> 487 secondes.
>
> in Squeak: but it took a lot more (in fact I stopped it).
> Is there any reason why?
>
> Time millisecondsToRun: [
> | x |
> x := 0 .
> 1000 timesRepeat: [
> 100000000 timesRepeat: [ x := x + 1 ] ] ].
>
> Stef
>
>
>
>
>
--
========================================================================
===
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
========================================================================
===
More information about the Squeak-dev
mailing list
|