[Haskell-cafe] In-place modification

Hugh Perkins hughperkins at gmail.com
Sun Jul 15 06:19:29 EDT 2007


Hey, guys, I just realized this test is not really fair!

I've been using the Microsoft .Net compiler ,which is a proprietary
closed-source compiler.

To be fair to Haskell, we should probably compare it to other open source
products, such as g++ and mono?

Here are the timings ;-)

Haskell
======

J:\dev\haskell>ghc -O2 -o primechaddai.exe PrimeChaddai.hs

J:\dev\haskell>primechaddai
number of primes: 664579
Elapsed time: 26.234

g++
===

J:\dev\test\testperf>g++ -O2 -o prime.exe prime.cpp

J:\dev\test\testperf>prime
number of primes: 664579
elapsed time: 0.984

mono
====

J:\dev\test\testperf>erase primecs.exe

J:\dev\test\testperf>gmcs primecs.cs

J:\dev\test\testperf>mono primecs.exe
number of primes: 664579
elapsed time: 0,719

Microsoft C#
=========

J:\dev\test\testperf>csc /nologo primecs.cs

J:\dev\test\testperf>primecs
number of primes: 664579
elapsed time: 0,6875

Not only does mono come close to the Microsoft .Net time, both mono and
Microsoft .Net are faster than g++ ;-) and whack Haskell.

Here's the C++ code for completeness:

#include <iostream>
#include <ctime>
using namespace std;

int CalculateNumberOfPrimes( int maxprime )
{
    bool *IsPrime = new bool[ maxprime ];

    for( int i = 0; i < maxprime; i++ )
    {
        IsPrime[i] = true;
    }

    int NumberOfPrimes = 0;

    for( int i = 2; i < maxprime; i++ )
    {
        if( IsPrime[i] )
        {
            NumberOfPrimes++;
            for( int j = ( i << 1 ); j < maxprime; j+= i )
            {
                IsPrime[ j] = false;
            }
        }
    }

    return NumberOfPrimes;
}

int main( int argc, char *argv[] )
{
    clock_t start = clock();

    int NumberOfPrimes = CalculateNumberOfPrimes( 10000000 );
    cout << "number of primes: " << NumberOfPrimes << endl;

    clock_t finish = clock();
    double time = (double(finish)-double(start))/CLOCKS_PER_SEC;
    cout << "elapsed time: " << time << endl;

    return 0;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20070715/9b061017/attachment.htm


More information about the Haskell-Cafe mailing list