🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #141778

Szybkość Javy wg Horstmanna a testy...

#141778
From: Abece
Date: Sun, 19 Oct 2008 19:41
160 lines
3461 bytes
Uparłem się i wklepałem kod z VIII wydania "Java podstawy".

I niestety, uzyskane wyniki, są... dziwne. Wedle książki, na ThinkPadzie 
2 rdzeniowym, 1.66 GHz: 360/105ms (C++/Java).

U mnie - dałem szansę Javie (1.6_10) i odpalałem ją na PDC 2160@2.53 GHz 
+ 3.5 GB RAM a C++ (GCC 4.1.1 Gentoo) na Duronie 1.2 GHz + 256 MB RAMu z 
wynikami odpowiednio:
Java:


T:\testszybkosci>java exp
Ilosc: 2
21688 ms.
T:\testszybkosci>java exp
Ilosc: 2
21984 ms.
T:\testszybkosci>java exp
Ilosc: 2
22016 ms.
T:\testszybkosci>java exp
Ilosc: 2
22125 ms.

C++ (Duron 1.2GHz)
$ ./a.out
Ilosc: 2
630 ms.
$ ./a.out
Ilosc: 2
630 ms.
$ ./a.out
Ilosc: 2
630 ms.
$ ./a.out
Ilosc: 2
630 ms.

Poniżej załączam oba kody z ww książki...
Spodziewałem się wyniku bliżej 50-80ms (MAX!), ale nie 22 sekundy(sic!).

Przyznam się szczerze, że nawet ja (jestem baaaardzo sceptyczny wobec 
osiągów Javy) jestem zdumiony wynikiem uzyskanym w teście zaproponowanym 
przez Znawcę - Pana Horstmanna...


=============== KODY =================


JAVA:
"
import java.util.*;


public class exp
{
	public static void main(String[] s)
	{
		int n=2000000;
		long start = System.currentTimeMillis();
		BitSet b = new BitSet(n+1);
		int count = 0;
		int i;
		for(i=2;i<=n;i++)
			b.set(i);
		i=2;
		while (i*i<=n)
		{
			if(b.get(i))
			count++;
			int k=2*i;
			while(k<=n)
			{
				b.clear(k);
				k = k + 1;
			}
			i++;
		}
		while (i<=n)
		{
			if(b.get(i)) count++;
			i++;
		}
		long end = System.currentTimeMillis();
		System.out.println("Ilosc: " + count);
		System.out.println((end - start) + " ms.");
		
	}
}


C++:
"
#include <bitset>
#include <iostream>
#include <ctime>

using namespace std;

int main() {
     const int n=2000000;
     clock_t cstart = clock();
     bitset<n+1> b;
     int count = 0;
     int i;

     for (i=2;i<=n;i++)
     {
         b.set(i);
     }
     i = 2;
     while (i*i<=n)
     {
         if (b.test(i))
         {
             count++;
             int k=2*i;
             while (k<=n)
             {
                 b.reset(k);
                 k =  k+ 1;
             }
         }
         i++;
     }
     while (i<=n)
     {
         if (b.test(i))
         {
             count++;
         }
         i++;
     }
     clock_t cend = clock();
     double millis = 1000.0 * (cend - cstart) / CLOCKS_PER_SEC;
     cout << "Ilosc: " << count << endl << millis << " ms.";
     return 0;
}





















"
Technical Details
Message-ID: <gdg318$g5g$1@nemesis.news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.astercity.net!newsfeed.atman.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.astercity.net!newsfeed.atman.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail
From: Abece <abece.inaczej@abece.pl>
Newsgroups: pl.comp.lang.java
Subject: Szybkość Javy wg Horstmanna a testy...
Date: Sun, 19 Oct 2008 21:41:57 +0200
Organization: TP - http://www.tp.pl/
Lines: 160
Message-ID: <gdg318$g5g$1@nemesis.news.neostrada.pl>
NNTP-Posting-Host: dow253.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.neostrada.pl 1224445800 16560 83.24.130.253 (19 Oct 2008 19:50:00 GMT)
X-Complaints-To: usenet@news.neostrada.pl
NNTP-Posting-Date: Sun, 19 Oct 2008 19:50:00 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.17 (Windows/20080914)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit