Article View: pl.comp.lang.java
Article #141778Szybkość Javy wg Horstmanna a testy...
From: Abece
Date: Sun, 19 Oct 2008 19:41
Date: Sun, 19 Oct 2008 19:41
160 lines
3461 bytes
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-mailShow 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