> On 17 Dec 2016, at 14:28, Henrik Nergaard <henrik.nerga...@uia.no> wrote:
> 
> This is not a comparable benchmark as the sum in Smalltalk keeps on growing 
> and ends up doing LargeInteger calculations and thus the speed loss, while 
> the c the int just rolls over.
> 
> Sum in Smalltalk = 500000000500000000
> Sum in C   = -1243309312

Yes, I realised afterwards. Shame on me.

Now, in Pharo 64 bits:

[ 
        | sum | 
        sum:= 0. 
        1 to: 1e9 do: [ :i | sum := sum + i ]. 
        self assert: sum = (1e9 * (1e9 + 1) / 2) ] timeToRun. 

"0:00:00:03.379"

(1e9 * (1e9 + 1) / 2) < SmallInteger maxVal.
 
"true"

So there the speed difference is way smaller.

> Best regards,
> Henrik
> 
> -----Original Message-----
> From: Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] On Behalf Of 
> Sven Van Caekenberghe
> Sent: Saturday, December 17, 2016 2:15 PM
> To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
> Subject: Re: [Pharo-users] [Stupid Benchmarks] C++ vs Pharo
> 
> Like this:
> 
> [ | sum | sum:= 0. 1 to: 1e9 do: [ :i | sum := sum + i ]. sum ] timeToRun. 
> 
> "0:00:00:39.305"
> 
> cat bench.c
> 
> #include <stdio.h>
> #include <time.h>
> 
> int main() {
>  clock_t begin = clock();
> 
>  int sum = 0;
>  for (int i = 0; i < 1000000000; i++)
>    sum += i;
> 
>  clock_t end = clock();
>  double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
>  printf("time_spent=%f\n", time_spent); }
> 
> ./a.out
> 
> time_spent=2.370234
> 
> That is C being 16 times faster ...
> 
>> On 17 Dec 2016, at 13:49, Sven Van Caekenberghe <s...@stfx.eu> wrote:
>> 
>> Hmm, this sounds wrong (C++ should be (a lot) faster on such micro 
>> benchmarks).
>> 
>> You should exclude the executable startup time.
>> 
>> In Pharo you should do [ .. ] timeToRun and something similar in C/C++.
>> 
>>> On 17 Dec 2016, at 13:41, Dimitris Chloupis <kilon.al...@gmail.com> wrote:
>>> 
>>> in multiplication pharo is around 2 times slower compared to C++
>>> 
>>> #include <stdio.h>
>>> 
>>> int main()
>>> {
>>> double x=1;
>>> for(double i; i<1000000000 ; ++i)
>>>   {
>>>   x = 0.1*i;
>>>   }
>>> 
>>> return 1;
>>> }
>>> 
>>> time ./testMul
>>>       3.13 real         3.13 user         0.00 sys
>>> 
>>> time ./pharo Ephestos.image eval "|x| x := 1. 1 to: 1000000000 do:[:each| x 
>>> := 0.1 * each]"
>>> 1
>>>       4.97 real         4.48 user         0.09 sys
>>> 
>>> On Sat, Dec 17, 2016 at 2:16 PM Dimitris Chloupis <kilon.al...@gmail.com> 
>>> wrote:
>>> So I was bored and decided to test how fast pharo is compared to C++. 
>>> 
>>> so I tested addition
>>> 
>>> C++ version:
>>> 
>>> #include <stdio.h>
>>> 
>>> int main()
>>> {
>>> double x=0;
>>> while(x<1000000000)
>>>   {
>>>   x = x+1;
>>>   }
>>> 
>>> return 1;
>>> }
>>> 
>>> time ./test1
>>>       2.84 real         2.84 user         0.00 sys
>>> 
>>> Pharo version:
>>> 
>>> time ./pharo Ephestos.image eval "|x| x := 0. 1 to: 1000000000 do:[:each| x 
>>> := x +1]"
>>> 1
>>>       2.09 real         1.94 user         0.08 sys
>>> 
>>> Pharo is +50% faster than C++ ... o_O ... that's suprising, I assume here 
>>> Pharo VM probably does some kind of optimisation. 
>>> 
>> 
> 
> 
> 


Reply via email to