Schrift
[thread]8124[/thread]

Frage zu subref



<< >> 7 Einträge, 1 Seite
Froschpopo
 2006-06-30 07:03
#67721 #67721
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Was ist eigentlich schneller?

Bsp: 1
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
   my $count = 0;

my $fetch_img = sub {
my $item = shift;
#arbeite...
$count++;
};

for my $item (@images) {
$fetch_img->($item);
}

print "Zahl: $count";

bsp: 2
Code: (dl )
1
2
3
4
5
6
7
   my $count = 0;
for my $item (@images) {
#arbeite...
$count++;
}

print "Zahl: $count";
\n\n

<!--EDIT|Froschpopo|1151637356-->
ptk
 2006-06-30 09:34
#67722 #67722
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du kennst Benchmark.pm?
Froschpopo
 2006-06-30 18:49
#67723 #67723
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
schonmal gehört... Finde das Beispiel im Kamelbuch ziemlich unverständlich...
Aber mit der Frage war eigentlich indirekt auch gemeint, ob das ganze so von der Logik her einigermaßen sinnvoller ist als den block direkt in der schleife auszuführen.\n\n

<!--EDIT|Froschpopo|1151679020-->
lichtkind
 2006-06-30 19:16
#67724 #67724
User since
2004-03-22
5681 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
kommt auf gesamtprogramm an und warum:

$fetch_img->($item) und nicht $fetch_img($item) ?
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
GwenDragon
 2006-06-30 19:35
#67725 #67725
User since
2005-01-17
14598 Artikel
Admin1
[Homepage]
user image
Natürlich ist 2 schneller.
Weil dort die Subroutinencalls fehlen, die kosten auch Zeit.

Aber warum nicht so?

Code: (dl )
1
2
3
4
5
6
 my $count = @images;
for my $item (@images) {
      #arbeite...
}

 print "Zahl: $count";
\n\n

<!--EDIT|GwenDragon|1151681801-->
pq
 2006-06-30 21:45
#67726 #67726
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=lichtkind,30.06.2006, 17:16]kommt auf gesamtprogramm an und warum:

$fetch_img->($item) und nicht $fetch_img($item) ?[/quote]
weil das ein syntax-fehler ist.
daneben habe ich die angewohnheit, alle referenzen mit -> zu
derefenzieren, also auch subrefs. eine alternative, die kein syntaxfehler
ist, wäre &$subref($arg), aber das finde ich viel unlesbarer.
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
Froschpopo
 2006-07-01 02:37
#67727 #67727
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
[quote=GwenDragon,30.06.2006, 17:35]Natürlich ist 2 schneller.
Weil dort die Subroutinencalls fehlen, die kosten auch Zeit.

Aber warum nicht so?

Code: (dl )
1
2
3
4
5
6
 my $count = @images;
for my $item (@images) {
#arbeite...
}

print "Zahl: $count";
[/quote]
Achso, danke für die Antwort!
Puh bei der Hitze fällts schreiben schwer

Zum Grund: weil ich $fetch_img noch von anderen Schleifen verwenden will.
<< >> 7 Einträge, 1 Seite



View all threads created 2006-06-30 07:03.