You are comparing two different types here, double vs a 32 bit integer, and program starting time should be excluded.

Something like:

 

In playground:

Smalltalk garbageCollect.

[ 0 to: 16r0FFFFFFF do: [ :x | ] ] timeToRun.

��� try switch the 0 to 0.0 to have the iterations be on a float, leads to much slower time���

 

C++ (compile with -std=c++11)

 

#include <iostream>

#include <chrono>

 

int main(){

               

                using namespace std::chrono;

 

                auto start = high_resolution_clock::now();

                for(uint32_t x{0}; x <= 0x0FFFFFFF; ++x){ }            

                auto end = high_resolution_clock::now();

                auto ms = duration_cast<milliseconds>(end - start).count();

 

                std::cout

                                << "time used: "

                                << ms

                                << "ms"

                                << std::endl;

}

 

Best regards,

Henrik

 

 

From: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] On Behalf Of Dimitris Chloupis
Sent: Saturday, December 17, 2016 1:16 PM
To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
Subject: [Pharo-users] [Stupid Benchmarks] C++ vs Pharo

 

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.