I have the Java code:

        public class Pi_Java_Sequential {
          public static void main ( final String[] args ) {
            final long n = 1000000000l ;
            final double delta = 1.0 / n ;
            final long startTimeNanos = System.nanoTime ( ) ;
            double sum = 0.0 ;
            for ( long i = 1 ; i <= n ; ++i ) {
              final double x = ( i - 0.5 ) * delta ;
              sum += 1.0 / ( 1.0 + x * x ) ;
            }
            final double pi = 4.0 * sum * delta ;
            final double elapseTime = ( System.nanoTime ( ) - startTimeNanos ) 
/ 1e9 ;
            System.out.println ( "==== Java Sequential pi = " + pi ) ;
            System.out.println ( "==== Java Sequential iteration count = " + n 
) ;
            System.out.println ( "==== Java Sequential elapse = " + elapseTime 
) ;
          }
        }

it compiles and executes fine:

        javac -d . -sourcepath . Pi_Java_Sequential.java
        java Pi_Java_Sequential
        ==== Java Sequential pi = 3.1415926535899708
        ==== Java Sequential iteration count = 1000000000
        ==== Java Sequential elapse = 18.592387429

Transforming this into what I thought would be the equivalent X10
program:

        import x10.io.Console ;
        
        public class Pi_X10_Sequential {
          public static def main ( args : Rail[String] ! ) : void {
            val n : long = 1000000000l ;
            val delta : double = 1.0 / n ;
            val startTimeNanos : long = System.nanoTime ( ) ;
            var sum : double = 0.0 ;
            for ( var i : long = 1 ; i <= n ; ++i ) {
              val x : double = ( i - 0.5 ) * delta ;
              sum += 1.0 / ( 1.0 + x * x ) ;
            }
            val pi : double = 4.0 * sum * delta ;
            val elapseTime : double = ( System.nanoTime ( ) - startTimeNanos ) 
/ 1e9 ;
            Console.OUT.println ( "==== X10 Sequential pi = " + pi ) ;
            Console.OUT.println ( "==== X10 Sequential iteration count = " + n 
) ;
            Console.OUT.println ( "==== X10 Sequential elapse = " + elapseTime 
) ;
          }
        }

I was a bit flabbergasted to find:

        x10c Pi_X10_Sequential.x10
        x10 Pi_X10_Sequential
        ==== X10 Sequential pi = 3.1415926535899708
        ==== X10 Sequential iteration count = 1000000000
        ==== X10 Sequential elapse = 94.852492972

Is it really the case that X10 code is 8 times slower than Java code for
tight loop arithmetic?  Surely not.  I am hoping there is something
clearly obviously wrong with my X10 code.
 
-- 
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Road    m: +44 7770 465 077   xmpp: rus...@russel.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder



------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
X10-users mailing list
X10-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to