Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11958[/thread]

Header-Datum-Formatierung

Leser: 1


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
marky
 2008-06-02 03:29
#110603 #110603
User since
2003-08-15
215 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

ich überarbeite gerade ein Script und habe darin diesen unsäglichen Code, nur um ein HTTP-Header-formatiertes Datum zu bekommen.

my @MON = qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/;
my @WDAY = qw/Sun Mon Tue Wed Thu Fri Sat/;
my ($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time);
my $hdate = sprintf("%s, %02d %s %04d %02d:%02d:%02d",$WDAY[$wday],$mday,$MON[$mon],$year+1900,$hour,$min,$sec);

Habe jetzt viel gegoogelt und es scheint wohl wirklich nichts anderes zu geben, es soll ohne Modul gehen. Aber das kann doch wirklich nicht sein?
nepos
 2008-06-02 11:19
#110606 #110606
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Mit Modul würde es sicherlich mit dem POSIX-Modul (das ist immer dabei, weil im Core) und dessen Funktion strftime() um einiges kürzer gehen:
Code (perl): (dl )
1
2
use POSIX qw(strftime);
my $hdate = strftime("%a, %d %b %Y %H:%M:%S", gmtime());


Eventuell musst du hier allerdings auf die locales aufpassen, da sonst die abgekürzten Tages- und Monatsnamen in der falschen Sprache kommen.
GwenDragon
 2008-06-02 11:28
#110608 #110608
User since
2005-01-17
14784 Artikel
Admin1
[Homepage]
user image
@marky
Googlen ist nicht sinnvoll.
Suche auf CPAN oder verwende in Firefox oder Opera eine benutzerfefinierte Suche. Dann brauchst du in der Adresszeile nur cpan Date HTTP eingeben und findest:
CPAN:DateTime::Format::HTTP
CPAN:HTTP::Date
marky
 2008-06-02 17:08
#110627 #110627
User since
2003-08-15
215 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

die Module habe ich auch gefunden, ich will aber wegen dem Datum kein Modul laden, das ist mir zu unperformant - ganz einfach.

Dann muss es wohl so sein, das sieht aber wirklich nicht gut aus :-)
Linuxer
 2008-06-02 17:57
#110628 #110628
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Wie gross sind denn die Performanceeinbussen, wenn Du die Module verwendest?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
GwenDragon
 2008-06-02 18:04
#110629 #110629
User since
2005-01-17
14784 Artikel
Admin1
[Homepage]
user image
marky+2008-06-02 15:08:19--

ich will aber wegen dem Datum kein Modul laden, das ist mir zu unperformant - ganz einfach.
Dann schreib es in C und binde es als XS in Perl ein. Ganz ehrlich.

Wieviele Tausend Requests pro Sekunde musst du bearbeiten?

Lass doch mal einen Benchmark laufen, ob es wirklioch so viel Performance kostet, oder kommt es auf jede µs oder ms an?
marky
 2008-06-02 20:36
#110638 #110638
User since
2003-08-15
215 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo, mir geht dabei um die IO Performance, dh. den Festzugriff auf das Modul und das muss ja nicht sein, um 4 Zeile-Code zu ersetzen.

Bei Script handelt es sich um Standardprodukt und überlege wirklich fast bei jedem Konstrukt, wie es am schnellsten ist und teste fast alle Code-Varianten mit Benchmark, was übrigens sehr interessant ist.

Die Performance des System ist mit der grösste Vorteil des Produktes und alle PHP und datenbanksystem weit überlegen.

Daher bin ich da so eigen.
GwenDragon
 2008-06-02 20:58
#110641 #110641
User since
2005-01-17
14784 Artikel
Admin1
[Homepage]
user image
Ah ja. Wenn das so wartbar ist mit dem einfügen der Codezeilen anstat des Import eines Moduls, dann ist das ok.

Sicher sind ein paar Zeilen Code schneller, als der Import eiens Moduls, logisch.
pq
 2008-06-02 21:53
#110647 #110647
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
marky+2008-06-02 18:36:32--
und überlege wirklich fast bei jedem Konstrukt, wie es am schnellsten ist und teste fast alle Code-Varianten mit Benchmark, was übrigens sehr interessant ist.

das mache ich auch, deshalb kann mein template-modul (HTC) auch unter mod_perl sogar
mit den template-modulen mithalten, die in C geschrieben sind. der nachteil ist jedoch,
dass es ein paar sehr fragile stellen gibt, auf die ich immer wieder aufpassen muss, wenn
ich was ändere. bei dem modul war mir die geschwindigkeit wichtiger, da es die gesamt-
performance sehr stark beeinflussen kann. schreibe ich jedoch ein skript, dann binde ich lieber
module ein, d.h. man sollte eher drauf aufpassen, dass eingebundene module schnell sind,
aber das drumherum ist nicht ganz so wichtig, da es ja die modul-funktionen sind, die
am häufigsten aufgerufen werden. sowas kann man mit einem profiler sehr schön herausfinden,
sollte man zusätzlich zu benchmarks mal probiert haben.

desweiteren würde ich nicht versuchen, ein skript so zu optimieren, dass es unter CGI am
schnellsten ist, denn wenn man wirklich performance-probleme hat, ist man eh gut beraten,
mod_perl oder FastCGI zu benutzen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
marky
 2008-06-03 03:15
#110657 #110657
User since
2003-08-15
215 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

Wartbarkeit: die Zeilen verändern sich ja nicht, sind nur hässlich und langsam.

Thema Performance, bei einem Standardprodukt, dass von der Stange verkauft wird, kannst weder auf spezielle Module zurückgreifen und schon gar nicht auf Dinge wie mod_perl oder FastCGI - das Ding muss bei jeden 5 EUR hoster laufen - daher verwende ich nur Standardmodule wie File::Find - alles andere ist selber programmiert, wenn das auch manchmal schmerzt.
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2008-06-02 03:29.