From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,cd703a96ca51de6e X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.inode.at!news.hispeed.ch!linux2.krischik.com!news From: Martin Krischik Newsgroups: comp.lang.ada Subject: Re: 'Base Date: Thu, 15 Dec 2005 21:08:22 +0100 Organization: Cablecom Newsserver Message-ID: <1442266.RLM9APbJWj@linux1.krischik.com> References: <1134055303.758950.308680@o13g2000cwo.googlegroups.com> <2038690.eAzdaEvAON@linux1.krischik.com> <1134160956.403383.29180@z14g2000cwz.googlegroups.com> <1170126.PvJVGQkA4J@linux1.krischik.com> NNTP-Posting-Host: 80-218-112-22.dclient.hispeed.ch Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit X-Trace: news.hispeed.ch 1134754232 3147 80.218.112.22 (16 Dec 2005 17:30:32 GMT) X-Complaints-To: news@hispeed.ch NNTP-Posting-Date: Fri, 16 Dec 2005 17:30:32 +0000 (UTC) User-Agent: KNode/0.10 Xref: g2news1.google.com comp.lang.ada:6898 Date: 2005-12-15T21:08:22+01:00 List-Id: Per Sandberg wrote: > Ole-Hjalmar Kristensen wrote: >> My gut reaction was also that Ada will always outperform Java, but I >> have found at least one case there this is not true. I recently wrote >> a simple test program to transpose a two-dimensional array in Java, >> Ada, C++, and C. The purpose was not really to compare languages, but >> to see the effects of caching. There were two different alogrithms >> used, one a simple nested loop, the other a recursive subdivision with >> a nested loop at the lowest level. When the simple nested loop was >> tested with large data sets (~ available RAM on the machines) the >> diffence between Ada, C, and C++ was insignificant, all being 3-4 >> times faster than Java. However, when testing the recursive version, I >> found that Java was actually about 10% faster than the other three, >> which again came extremely close to each other. Apparently the JIT >> compiler had plenty of time to do its work and come up with pretty >> optimal code. The other interesting result from the experiment was >> that the recursive version was from 3-4 to 20 times faster than the >> simple nested loop. >> >> >> >>>>>>>"MK" == Martin Krischik writes: >> >> >> MK> Ada arrays are not a primitive type - they are a quite complex >> and powerfull MK> type. >> >> MK> Performace? Ada allways outperform Java for a start. But Ada's >> build in MK> checks will also outperform C/C++ when used with all >> appropriate MK> "assert()"s in place. >> >> > > This is intresting but i have tried Ada (GNAT/GCC) with different > optimisation levels and different validity checking. > and fount that ther is a clearly visible diference in performance > depending on how far the compiler is allowed to go in terms of > optimisation. I have not done any qualified measurments but the guts > feeling is that the performace may change bye a factor of at least 2 > depending on compiler switches. > Also worth to mention that as far as i have seen ther is normaly areound > 30% difference in performace when going from "-O0" to "-Os". Sure - if you switch checks off and optimization on the program will be faster. If you compare Ada - with checks - with C/C++ - with assert then Ada will have more change in optimization of those checks then C/C++ has on the asserts. Ada: type X is range ... f (Value : X) is .... for I in X'Range loop f (i); end loop; C: typedef int X; extern f (X Value) { assert (Value >= X_First && Value <= X_Last) ..... } for (i= X_First ; X <= X_Last; i++) { f (i); } Ada will make no checks at all while in C must check "Value" with each loop. Remember: we live in a complex world and f () will be called a different places - some where static analysis may prove the correctness of t the parameter - like the example above - and some where it cant. Just removing the assert is not an option. Martin -- mailto://krischik@users.sourceforge.net Ada programming at: http://ada.krischik.com