Thread Optimieren (21 answers)
Opened by kabel at 2003-08-20 12:05

Strat
 2003-08-20 15:28
#998 #998
User since
2003-08-04
5246 articles
ModeratorIn
[Homepage] [default_avatar]
zusaetzlich koenntest du es auch noch perl-maessig ein klein wenig schneller machen (macht zwar nicht viel aus):
1. Da du die OOP-CGI-Syntax verwendest, kannst du auf den Exporter verzichten:
use CGI (); # no namespace pollution

2. my $q = CGI::->new();

3. $username = (split /\//, $url)[-1];
da koennte
($username) = $url =~ /\/([^\/]+)$/;
schneller sein

4. Du hast folgende Struktur:
Code (perl): (dl )
1
2
3
4
5
6
if (!(&#36design eq "own")) {
}
if (&#36design eq "own") {
}
else {
}

da besser zusammenfassen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#Art und Name des Designs ermitteln

if (&#36design eq "own")
{
  &#36name = "own";
}
else
{
  open(FILE, "&#36internmaindir/userdaten/&#36userid/daten/payeddesigns.dat") or FEHLERABFRAGE;
  flock FILE,1;
  @designs = <FILE>;
  s/\n// foreach (@designs);
  close(FILE);
  foreach(@designs) { if (&#36_ eq &#36design) { &#36found = "ja"; } }
  if (!(&#36found eq "ja")) { require "hpm_homepage_designnn.cgi"; }

  &#36anfrage = "SELECT name FROM hpm_designs WHERE designid='&#36design'";
  &datenbank;
  &#36ergebnisse = &#36sth->fetchall_arrayref( { name => 1 } );
  foreach(@&#36ergebnisse) { &#36name = &#36_->{name}; }
}


5. s/\n// foreach (@designs);
schneller ist: chomp(@designs); wenn nur die Zeilenumbrueche am Ende weggeworfen werden sollen

6. open (FH, $filename);
wieso machst du da keine fehlerabfrage? bist du 100% sicher, dass das immer gut geht (auch in 5 jahren?)
Code (perl): (dl )
1
2
3
unless (open (FH, &#36filename)) {
  die "Error: couldn't read '&#36filename': &#36!\n";
}

oder so aehnlich

das sind so die Sachen, die mir perl-maessig aufgefallen sind. Ich empfehle dir sehr, mit use warnings und use strict zu entwickeln, weil du dir viel zeit bei der Fehlersuche sparst...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Optimieren