Thread Findet goto in der modernen Programmierung noch Verwendung? (13 answers)
Opened by roooot at 2010-11-23 23:32

topeg
 2010-11-24 02:44
#143023 #143023
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Hast recht daran habe ich gar nicht gedacht.
Als ich das das letzte mal getestet hatte war "goto" das schnellste. (war mit perl 5.6 glaube ich)

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw(cmpthese);

my %case=(
  a => sub{ return 1*shift; },
  b => sub{ return 2*shift; },
  c => sub{ return 3*shift; },
  d => sub{ return 4*shift; },
);

*my_a=$case{a};
*my_b=$case{b};
*my_c=$case{c};
*my_d=$case{d};

sub rstr{ return chr(int(rand(4))+97) }
sub gto{ goto $case{rstr()}; }
sub rcl{ $case{rstr()}->(@_); }
sub scl{ &{ $case{rstr()} }; }
sub als
{
  my $f=rstr();
  $f eq 'a' and return my_a(@_);
  $f eq 'b' and return my_b(@_);
  $f eq 'c' and return my_c(@_);
  $f eq 'd' and return my_d(@_);
}

cmpthese(1000000, {
  goto    => sub{ gto(55); },
  refcall => sub{ rcl(55); },
  alias   => sub{ als(55); },
  subcall => sub{ scl(55); },
});


Ergebnis:
Code: (dl )
1
2
3
4
5
            Rate   alias refcall    goto subcall
alias 400000/s -- -11% -16% -20%
refcall 450450/s 13% -- -5% -10%
goto 473934/s 18% 5% -- -6%
subcall 502513/s 26% 12% 6% --


Lohnt sich immer Tests zu wiederholen :-)

View full thread Findet goto in der modernen Programmierung noch Verwendung?