Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Perl/CGI » Wie schnell ist Perl?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
27.08.2008, 16:07 Uhr
~328974298
Gast


Hi,

Es würde mich mal interessieren, wie schnell so ein Perl-Script eigentlich ist?

Läuft es vielleicht so schnell durch den Interpreter, wie ein normales C Programm ausgeführt wird?
Vielleicht sogar schneller?

Oder ist es doch langsamer?
Eventuell sogar so langsam dass es schon in Richtung Java etc. geht?

Vielen Dank für eure Antworten!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.08.2008, 18:00 Uhr
Lensflare



Alles was interpretiert wird, ist grundsätzlich langsamer.
Java wird zumindest noch vorher in den Bytecode übersetzt.

Also würde ich stark annehmen, dass Perl um einiges langsamer ist als Java. Und erst Recht langsamer als C/C++
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.08.2008, 18:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


langsamer als nativ kompilierte programme auf jedenfall. Jedoch optimiert/"kompiliert" Perl das programm vor dem start (was sich z.b FastCGI zu nutze macht, in dem es die Programme nur einmal optimiert und dann so im ram behält) und so ist das imho deutlich schneller als java.

Aber verbessert mich wenn ich mich irre
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.08.2008, 19:08 Uhr
0xdeadbeef
Gott
(Operator)


Im language shootout behält perl die Nase vor Java ( http://shootout.alioth.debian.org/gp4/perl.php ), aber deutlich hinter C ( http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=perl&lang2=gcc ) und C++ ( http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=perl&lang2=gpp ).

Man muss aber natürlich dazu sagen, dass solche Vergleiche nur von begrenztem Wert sind. Zum einen vergleicht man damit Implementierungen, nicht direkt die Sprachen (die Sprachen selbst haben keine Geschwindigkeit), zum anderen kommt es immer auf das Anwendungsgebiet an. Wenn man viel mit regulären Ausdrücken rumfuchteln muss, ist Perl eine deutlich sinnvollere Wahl, als wenn man mit Java-Servlets kommunizieren muss.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.08.2008, 08:04 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Da grab ich doch mal auf meiner Platte... hab letztes Jahr zu Demozwecken mal ein Mini-Skript zur Primzahlenberechnung geschrieben, einfach mal um die Geschwindigkeiten zu vergleichen -- ein Mini-Shootout. Das hier war das Ergebnis:


Code:
Primzahlen bis 10000, naiver Algorithmus


Zeit:
----------------------------------------
Assembler:      0.004
C:              0.550
AWK:            6.448
Perl:          13.176
Lua:           15.889
Python:        17.119
Bourne Shell:  32.320
Java:          59.030
Tcl:           67.942
Ruby:          85.630
LISP:          Stack overflow


Quelltextgroesse (Bytes):
----------------------------------------
Perl:            54
Ruby:            67
AWK:             77
Python:          86
C:              101
Tcl:            140
Lua:            151
Bourne Shell:   166
Java:           179
LISP:           386
Assembler:     1365



Dass das nicht repraesentativ ist, duerfte einleuchten. Kommt immer drauf an, ob man viel mit dynamischem Speicher arbeitet, viele Funktionsaufrufe hat, je nachdem, wo das jeweilige System seine Staerken und Schwaechen hat... man kann auch alles (sogar ungewollt) manipulieren: Das Shell-Skript oben benutzt das factor-Programm, und das ist wieder C. Dass AWK aber schneller abschneidet als Perl... weia.
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.

Dieser Post wurde am 28.08.2008 um 08:06 Uhr von Bruder Leif editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.08.2008, 11:24 Uhr
~a0efo
Gast


Dass Perl doch eigentlich relativ gut abschneidet, liegt glaub ich auch großen Teils daran, dass der Perl Interpreter ja ein reines C Programm ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.08.2008, 12:25 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Perl ist auch keine richtige Interpretersprache, denn der Code wird nicht zur Laufzeit interpretiert. Wenn man ein Perlprogramm startet wird es erst komplett kompiliert und dann ausgeführt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.08.2008, 20:52 Uhr
Lensflare



@Bruder Leif:
schade, dass C# nicht dabei ist.

Kannst du bitte den Quellcode von C, Perl und Java posten?
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.08.2008, 08:18 Uhr
Bruder Leif
dances with systems
(Operator)



Zitat von Lensflare:
@Bruder Leif:
schade, dass C# nicht dabei ist.

Kannst du bitte den Quellcode von C, Perl und Java posten?


Moin!

C# ist nicht dabei, weil ich mich von Microsoft mittlerweile stark distanziere. Java ist eigentlich auch nur dabei, weil mich ein Kollege drum gebeten hat Der Perl-Quelltext ist inzwischen gegolft, bin mir nicht sicher, wie es mit der Performance jetzt aussieht. Hier die Sourcen:


C++:
#include<stdio.h>
main(i,j,t){for(i=1;i++<10000;){for(t=0,j=2;j<i;t+=!(i%j++));t||printf("%d ",i);}}




Code:
for$i(2..10000){print"$i "if$i-2==grep{$i%$_}(1..$i)}




Code:
public class prim {public static void main(String args[]){int i,t,j;for(i=1;i++<10000;){for(t=0,j=2;j<i;t+=(i%j++)!=0?0:1);if(t==0){System.out.print(i);System.out.print(" ");}}}}


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.

Dieser Post wurde am 29.08.2008 um 08:18 Uhr von Bruder Leif editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.08.2008, 18:45 Uhr
Lensflare



Danke.

auch wenn es nicht so repräsentativ ist... ich finde es erschreckend, wie langsam java hier abschneidet.


Beim Java Code,

Code:
System.out.print(i);System.out.print(" ");



wieso hast du das nicht so gemacht?

Code:
System.out.print(""+i+" ");



um die concatenation von strings zu vermeiden?
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Perl/CGI ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: