Schrift
[thread]7347[/thread]

in_array() - Funktion bauen (Seite 2)

Leser: 1


<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten
pq
 2005-10-13 17:36
#58773 #58773
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=Taulmarill,13.10.2005, 14:56]kommt drauf an, wie man effizienz definiert. da grep eine perlfunktion ist kennen es die meisten. die laufzeit die verschwendet wird ist bei den meisten programmen irrelevant, da die listen klein genug sind. sobald ich ein modul einbinde oder eine eigene funktion schreibe, büße ich automatisch wartbarkeit ein.[/quote]
List::Util ist standard ab perl 5.7.3, von daher sind die funktionen ab da
teilweise den builtin-funktionen vorzuziehen.
mag sein, dass bei kleinen listen nichts gespart wird, aber unlesbarer
ist es nicht.
in Perl Best Practices wird es auch empfohlen.
Quote
ausserdem kann das einbinden eines moduls und exportieren von funktionen schon mehr laufzeit kosten als das greppen durch eine kleine liste.

nun ja, sobald dir so etwas sorgen macht, solltest du sowieso auf mod_perl
umsteigen =)\n\n

<!--EDIT|pq|1129210639-->
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
pq
 2005-10-13 17:41
#58774 #58774
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=phaylon,13.10.2005, 14:35]Dann eben Perl6::Junction, das sollte kurzschließen.[/quote]
use List::Util qw(first);
my $enthalten = defined first { $_ eq $search } @array;

List::Util ist mittlerweile standard.

edit: defined statt () =\n\n

<!--EDIT|pq|1129232912-->
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
Strat
 2005-10-13 19:28
#58775 #58775
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@rvi: wenn du probleme bei der uebergabe von arrays in eine subroutine hast, dann lies dir doch mal die kapitel subroutinen/referenzen in meiner "Einfuehrung in Perl" durch... die findest du auf meiner HP unter Vortraege...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Gast Gast
 2005-10-13 18:11
#58776 #58776
[quote=pq,13.10.2005, 15:41]List::Util ist mittlerweile standard.[/quote]
Code: (dl )
1
2
3
4
use Perl6::Junction qw/any/;
if ( any( @list ) >= 13 ) {
# ...
}

.. finde ich aber dennoch hübscher. ;)
Gast Gast
 2005-10-13 15:10
#58777 #58777
perldoc -f grep
pq
 2005-10-13 16:29
#58778 #58778
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
perldoc List::Util
funktion first macht genau das, was du willst
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
Gast Gast
 2005-10-13 17:14
#58779 #58779
Zweiter Versuch: Übergib Referenzen, keine Arrays und Hashes.
Taulmarill
 2005-10-13 17:46
#58780 #58780
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
ok, ich denke du hast recht pq. ich sollte nicht von meinen kollegen auf andere programmierer schliessen. von denen kennt keiner List::Util. allerdings befürchte ich, dass die auch grep und map nicht kennen würden.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
pq
 2005-10-13 20:48
#58781 #58781
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
was hat das überhaupt mit CGI zu tun? nichts, fällt mir gerade auf...
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
Cremator
 2005-10-13 23:10
#58782 #58782
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
[quote=pq,13.10.2005, 14:30][quote=phaylon,13.10.2005, 13:10]perldoc -f grep[/quote]
grep ist aber ineffizient.[/quote]
Aehm.. mein Perl sagt was anderes.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use Benchmark;
use strict;
use List::Util qw(first);
my @x = (0..50000);
Benchmark::cmpthese(1000000, {
'Grep' => 'my $y = grep {$_ == 45000} @x',
'Util' => 'my $y = first {$_ == 45000} @x' });

# Ergibt
Rate Util Grep
Util 914077/s -- -63%
Grep 2463054/s 169% --


Abgesehen davon finde ich die Syntax mit first nicht besonders intuitiv.
<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten



View all threads created 2005-10-13 15:58.