[linux-l] Debian-Mirror der belug...

Tobias Schlottke toby at schlottke.net
Fr Okt 17 19:09:21 CEST 2003


On Fri, 17 Oct 2003, Jan-Benedict Glaw wrote:



> >
> > Test1:
> > sam:monasemu> uname -a;java -version;java MakeThreads
> > Linux sam 2.4.22Toby2 #2 SMP Thu Sep 25 14:57:46 CEST 2003 i686 Intel(R) Pentium(R) 4 CPU 2.40GHz GenuineIntel GNU/Linux
> > java version "1.4.1_04"
> > Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_04-b01)
> > Java HotSpot(TM) Client VM (build 1.4.1_04-b01, mixed mode)
> >
> > Test done in 224 ms
>
c, ohne locking (wegen der Vergleichbarkeit):

Maschine1/Intel:
Zeit: 0.089475 sec
sam:~> a.out
Zeit: 0.096617 sec
sam:~> a.out
Zeit: 0.089429 sec
sam:~> a.out
Zeit: 0.096100 sec
sam:~> a.out
Zeit: 0.091254 sec
sam:~> a.out
Zeit: 0.095126 sec


Maschine 2/Sun:
geek:~> a.out
Zeit: 0.146852 sec
geek:~> a.out
Zeit: 0.152164 sec
geek:~> a.out
Zeit: 0.148835 sec
geek:~> a.out
Zeit: 0.150761 sec
geek:~> a.out
Zeit: 0.146677 sec



Dann nochmal mit locking

Maschine1/Intel:

sam:~> a.out
Zeit: 0.119626 sec
sam:~> a.out
Zeit: 0.092491 sec
sam:~> a.out
Zeit: 0.088570 sec
sam:~> a.out
Zeit: 0.091972 sec
sam:~> a.out
Zeit: 0.090704 sec
sam:~> a.out
Zeit: 0.096943 sec
sam:~> a.out
Zeit: 0.090729 sec


Maschine2/Sun:

geek:~> a.out
Zeit: 0.145504 sec
geek:~> a.out
Zeit: 0.147208 sec
geek:~> a.out
Zeit: 0.142758 sec
geek:~> a.out
Zeit: 0.147798 sec
geek:~> a.out
Zeit: 0.158475 sec
geek:~> a.out
Zeit: 0.150791 sec

(sun/sparc scheint das locking nicht so zu stören...)

===================================================================
Und nochmal Java mit locking damit wir nich Äpfel mit
Birnen vergleichen:

Maschine1/Intel:
Test done in 209 ms
sam:monasemu> java ag.netzwert.tools.MakeThreads

Test done in 210 ms
sam:monasemu> java ag.netzwert.tools.MakeThreads

Test done in 215 ms
sam:monasemu> java ag.netzwert.tools.MakeThreads

Test done in 209 ms
sam:monasemu> java ag.netzwert.tools.MakeThreads

Test done in 218 ms



Maschine 2/Sun:
geek:monasemu> java ag.netzwert.tools.MakeThreads

Test done in 324 ms
geek:monasemu> java ag.netzwert.tools.MakeThreads

Test done in 319 ms
geek:monasemu> java ag.netzwert.tools.MakeThreads

Test done in 335 ms
geek:monasemu> java ag.netzwert.tools.MakeThreads

Test done in 332 ms
geek:monasemu> java ag.netzwert.tools.MakeThreads

Test done in 331 ms


qued. Native is schneller, keine Frage. Aber ich
find's schon immer wieder erstaunlich, das java nicht
sooooo viel langsamer ist.
Wir haben jetzt natürlich ein bißchen an der
ursprünglichen Fragestellung vorbeigetestet. Die Frage
war: Was kostet ein fork? Und ich denke das ist
erheblich teurer als ein neuer thread.

Mmmmhhh...

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <sys/time.h>

int
main() {
    int i;
    int r;
    struct timeval t1, t2, diff;

    if (gettimeofday (&t1, NULL)) {
	perror ("gettimeofday () - first call");
	exit (EXIT_FAILURE);
    }

    for (i=0;i<1000;i++) {
	if ((r = fork()) > 0)
	    break;
    }
    if (r==0) {
	if (gettimeofday (&t2, NULL)) {
	    perror ("gettimeofday () - second call");
	    exit (EXIT_FAILURE);
	}
        timersub (&t2, &t1, &diff);
        printf ("Zeit: %d.%06d sec\n", diff.tv_sec, diff.tv_usec);
    }
    else {
	while (1) {
	    sleep(100);
	}
    }
}

(Muß man mit ^C abbrechen. Ja is nich schön, ich will
jetzt aber nach Hause.)

sam:~> a.out
Zeit: 0.120537 sec

sam:~> a.out
Zeit: 0.122638 sec

sam:~> a.out
Zeit: 0.105942 sec

Ok. Selbst ein fork geht schneller als ein neuer Thread
in Java.

Wieder was gelernt.... die Büchsen von heute sind
einfach rattenschnell und die OSe ziemlich ausgefeilt.
Vor 7 Jahren konnte man eine SCO Maschine mit 200
Prozessen ganz schön ins Rudern bringen. Jetzt atmet
die Kiste einmal kurz ein und hat 1000 Prozesse
gestartet und der Rechner läuft einfach weiter.....

Toby





Mehr Informationen über die Mailingliste linux-l