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

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