Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #29575

Forth vs Java in calculating partial sum ;)

From Melzzzzz <mel@zzzzz.com>
Newsgroups comp.lang.forth
Subject Forth vs Java in calculating partial sum ;)
Date 2014-04-12 19:11 +0200
Organization albasani.net
Message-ID <libs3f$2r2$2@news.albasani.net> (permalink)

Show all headers | View raw


Seems that Java bits Forth in optimizing tight loops. Eg division by
constant optimization is performed automatically.

Idea for bench is from:
http://lemire.me/blog/archives/2012/07/23/is-cc-worth-it/

bmaxa@maxa:~/examples/forth$ time gforth-fast -m 400M cumul.fs -e bye
62.1816300541229 
116.054248397871 
1666666616666667 

real	0m1.249s
user	0m1.225s
sys	0m0.023s

bmaxa@maxa:~/examples/forth$ time java Cumul
378.7878787878788
1190.4761904761904
1666666616666667

real	0m0.247s
user	0m0.215s
sys	0m0.042s

bmaxa@maxa:~/examples/forth$ cat cumul.fs
: N 50000000 ;

: init_cumul
	N 0 ?do
	i 3 / i +
	over i cells + !
	loop ;
	
: cumul 
	dup @ 
	N 1 ?do
	over i cells + @
	+ 2dup
	swap i cells + !
	loop 
	drop ;
: bench 2dup utime 2over execute drop utime 
	2swap d- d>f N s>f fswap f/ f. cr 2drop drop ;

N cells allocate throw
' init_cumul bench
' cumul bench
dup N 1 - cells + @ . cr
free throw


bmaxa@maxa:~/examples/forth$ cat Cumul.java
public class Cumul {

	public static void sum(long[] data) {
		if(data.length == 0) return;
		for( int i = 1; i !=  data.length; ++i)
		  data[i] += data[i-1];
	}



    public static long[]  givemeanarray(int N) {
    	long[] bigarray = new long[N];
        for(int k = 0; k<N; ++k)
          bigarray[k] = k+k/3;
        return bigarray;
     }
     
     public static void test(int N) {
      long bef = System.currentTimeMillis();
      long[] data = givemeanarray(N);
      long aft = System.currentTimeMillis();
      System.out.println(N/(1000.0 * (aft-bef)));
      bef = System.currentTimeMillis();
      sum(data);
      aft = System.currentTimeMillis();
      System.out.println(N/(1000.0 * (aft-bef)));
      System.out.println(data[N-1]);
     }
     
     public static void main(String[] args) {
     	test( 50 * 1000 * 1000 );
     }


}



-- 
Click OK to continue...

Back to comp.lang.forth | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Forth vs Java in calculating partial sum ;) Melzzzzz <mel@zzzzz.com> - 2014-04-12 19:11 +0200
  Re: Forth vs Java in calculating partial sum ;) Paul Rubin <no.email@nospam.invalid> - 2014-04-12 10:15 -0700
    Re: Forth vs Java in calculating partial sum ;) Melzzzzz <mel@zzzzz.com> - 2014-04-14 22:15 +0200
      Re: Forth vs Java in calculating partial sum ;) stephenXXX@mpeforth.com (Stephen Pelc) - 2014-04-14 23:20 +0000
        Re: Forth vs Java in calculating partial sum ;) Melzzzzz <mel@zzzzz.invalid> - 2014-04-15 04:18 +0200
          Re: Forth vs Java in calculating partial sum ;) m.a.m.hendrix@tue.nl - 2014-04-15 00:32 -0700
            Re: Forth vs Java in calculating partial sum ;) stephenXXX@mpeforth.com (Stephen Pelc) - 2014-04-15 11:33 +0000
            Re: Forth vs Java in calculating partial sum ;) Melzzzzz <mel@zzzzz.com> - 2014-04-15 15:55 +0200
          Re: Forth vs Java in calculating partial sum ;) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2014-04-15 14:44 +0000
            Re: Forth vs Java in calculating partial sum ;) Paul Rubin <no.email@nospam.invalid> - 2014-04-15 09:00 -0700
              Re: Forth vs Java in calculating partial sum ;) Melzzzzz <mel@zzzzz.invalid> - 2014-04-15 19:38 +0200
            Re: Forth vs Java in calculating partial sum ;) mhx@iae.nl - 2014-04-15 11:41 -0700
            Re: Forth vs Java in calculating partial sum ;) Melzzzzz <mel@zzzzz.com> - 2014-04-16 07:10 +0200
            Re: Forth vs Java in calculating partial sum ;) Melzzzzz <mel@zzzzz.com> - 2014-04-16 07:24 +0200
              Re: Forth vs Java in calculating partial sum ;) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2014-04-16 10:24 +0000
  Re: Forth vs Java in calculating partial sum ;) mhx@iae.nl - 2014-04-12 13:01 -0700
    Re: Forth vs Java in calculating partial sum ;) mhx@iae.nl - 2014-04-12 13:06 -0700
    Re: Forth vs Java in calculating partial sum ;) Paul Rubin <no.email@nospam.invalid> - 2014-04-12 15:49 -0700
      Re: Forth vs Java in calculating partial sum ;) mhx@iae.nl - 2014-04-12 23:00 -0700
        Re: Forth vs Java in calculating partial sum ;) Paul Rubin <no.email@nospam.invalid> - 2014-04-13 00:14 -0700
          Re: Forth vs Java in calculating partial sum ;) mhx@iae.nl - 2014-04-13 02:03 -0700
        Re: Forth vs Java in calculating partial sum ;) Bernd Paysan <bernd.paysan@gmx.de> - 2014-04-13 14:52 +0200
    Re: Forth vs Java in calculating partial sum ;) "WJ" <w_a_x_man@yahoo.com> - 2014-12-12 23:45 +0000
  Re: Forth vs Java in calculating partial sum ;) mhx@iae.nl - 2014-04-12 13:33 -0700
    Re: Forth vs Java in calculating partial sum ;) Bernd Paysan <bernd.paysan@gmx.de> - 2014-04-12 22:50 +0200
      Re: Forth vs Java in calculating partial sum ;) Melzzzzz <mel@zzzzz.invalid> - 2014-04-13 03:30 +0200
      Re: Forth vs Java in calculating partial sum ;) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2014-04-13 13:43 +0000
  Re: Forth vs Java in calculating partial sum ;) Andrew Haley <andrew29@littlepinkcloud.invalid> - 2014-04-15 10:05 -0500
  Re: Forth vs Java in calculating partial sum ;) "WJ" <w_a_x_man@yahoo.com> - 2014-12-05 05:46 +0000
  Re: Forth vs Java in calculating partial sum ;) "WJ" <w_a_x_man@yahoo.com> - 2014-12-10 09:50 +0000
    Re: Forth vs Java in calculating partial sum ;) "WJ" <w_a_x_man@yahoo.com> - 2014-12-10 18:29 +0000

csiph-web