From post at daniel-boehmer.de Mon Mar 11 08:54:41 2019 From: post at daniel-boehmer.de (=?UTF-8?Q?Daniel_B=C3=B6hmer?=) Date: Mon, 11 Mar 2019 16:54:41 +0100 Subject: [Leipzig-pm] =?utf-8?q?N=C3=A4chstes_Treffen_am_Fr=2C_5=2E4=2E_1?= =?utf-8?q?9=3A00?= Message-ID: Hallo Leipzig.pm, in diesem Jahr haben wir Gastgeber noch keinen gemeinsamen Termin gefunden, aber auf dem German Perl Workshop in M?nchen gab es ein Wiedersehen. Hier die neusten Neuigkeiten: - Der Workshop war mit ca. 80 Personen gut besucht und wieder ein interessanter Austausch mit vielen Anregungen, auch f?r uns als Monger-Gruppe. - Wir haben zwischen den Vortr?gen unsere Kalender befragt und ein Treffen f?r den Freitagabend am 5.4. vereinbart. Los geht's voraussichtlich 19:00 in der Dezentrale. Ich frage dort parallel den Termin an. Ein Vortragsthema haben wir diesmal nicht, aber wir k?nnen uns trotzdem treffen und Ideen f?r die n?chsten Monate besprechen. Gerade der Talk "Perl meetup Howto" von Salve auf dem Workshop hat mir neue Ideen gebracht. Bis dahin Daniel f?r Leipzig.pm From post at daniel-boehmer.de Sat Mar 23 11:22:23 2019 From: post at daniel-boehmer.de (=?UTF-8?Q?Daniel_B=C3=B6hmer?=) Date: Sat, 23 Mar 2019 19:22:23 +0100 Subject: [Leipzig-pm] =?utf-8?q?Perl5_und_Perl6_f=C3=BCr_Performance-Verg?= =?utf-8?q?leich_von_Fefe?= Message-ID: Hallo, siehe https://blog.fefe.de/?ts=a2689de5 Alle Daten dazu: https://ptrace.fefe.de/wp/ Ich finde Performance f?r meine Zwecke nicht besonders wichtig, aber sch?tze es wert, dass Perl5 unter den Skriptsprachen insgesamt gut dasteht. Die Aktion von Fefe finde ich f?rs Marketing und aus Neugier ganz interessant. Die aktuell vorhandene Perl5-Implementierung ist schon recht geschickt. https://ptrace.fefe.de/wp/wp.pl W?rde hier eine Schwartzian Transform helfen, die vielen Hash-Lookups zu vermeiden? https://en.wikipedia.org/wiki/Schwartzian_transform Herbert, hast du nicht Lust, eine Perl6-Implementierung einzureichen? Wenn du das als Gist bei GitHub anlegst, k?nnten wir versuchen, sie gemeinsam zu optimieren. Ich habe leider immer noch zu wenig Perl6 gemacht, um mit einer sinnvollen Version zu starten:( Viele Gr??e Daniel From heiko at hartje-it.de Sat Mar 23 17:01:16 2019 From: heiko at hartje-it.de (Heiko Hartje) Date: Sun, 24 Mar 2019 01:01:16 +0100 Subject: [Leipzig-pm] =?utf-8?q?Perl5_und_Perl6_f=C3=BCr_Performance-Verg?= =?utf-8?q?leich_von_Fefe?= In-Reply-To: References: Message-ID: Hallo Daniel, ich finde ?brigens nicht, da? Perl gut abschneidet in dem Test. Eigentlich best?tigt es eher, was sowieso alle von Perl denken. Es sei langsam. In diesem Test etwa die H?lfte langsamer als PHP und Java. Ich habe Deine Anregung aufgegriffen und mal untersucht, wie sich die Geschwindigkeit ?ndert mit einer Schwartzschen Transformation. Beim urspr?nglichen Code kriege ich die Eingabe nicht beendet (unter Windows). Deshalb habe ich einen Abbruch in die Schleife eingef?gt: #!/usr/bin/perl use strict; my %count = (); while (<>) { chomp; last unless $_; for (split) { $count{$_}++; } } my @keys = sort { $count{$b} <=> $count{$a} } keys %count; foreach my $key (@keys) { print $key, ' ', $count{$key}, "\n"; } Dann habe ich die Sortierung umgewandelt in ein map-sort-map: #!/usr/bin/perl use strict; my %count = (); while (<>) { chomp; last unless $_; for (split) { $count{$_}++; } } my @keys = map { $_->[0] } sort { @$b[1] <=> @$a[1] } map {[$_, $count{$_}]} keys %count; foreach my $key (@keys) { print $key, ' ', $count{$key}, "\n"; } Das habe ich zusammengebaut in eine einzige Datei: #!/usr/bin/perl use strict; use Time::HiRes qw(gettimeofday); my %count = (); while (<>) { chomp; last unless $_; for (split) { $count{$_}++; } } { my $start = gettimeofday(); my @keys = sort { $count{$b} <=> $count{$a} } keys %count; print gettimeofday() - $start, "\n"; } { my $start = gettimeofday(); my @keys = map { $_->[0] } sort { @$b[1] <=> @$a[1] } map {[$_, $count{$_}]} keys %count; print gettimeofday() - $start, "\n"; } Das Ergebnis ist ern?chternd (mit 1000 W?rtern des lorem-ipsum-Textes): 0.000162124633789063 0.000192165374755859 Meine Vermutung: wenn die Vergleichsroutine ($a <=> $b) ausreichend einfach ist, wird sie durch einen Aufruf kompilierten C-Codes ersetzt. M?glicherweise geschieht dies auch noch bei $c{$a} <=> $c{$b}. Oder ich habe die Transformation falsch angewendet. Jemand eine Idee? Viele Gr??e Heiko perl -v This is perl 5, version 16, subversion 1 (v5.16.1) built for MSWin32-x64-multi-thread --On Samstag, 23. M?rz 2019 19:22 +0100 Daniel B?hmer wrote: > Hallo, > > siehe https://blog.fefe.de/?ts=a2689de5 > > Alle Daten dazu: https://ptrace.fefe.de/wp/ > > Ich finde Performance f?r meine Zwecke nicht besonders wichtig, > aber sch?tze es wert, dass Perl5 unter den Skriptsprachen insgesamt > gut dasteht. Die Aktion von Fefe finde ich f?rs Marketing und > aus Neugier ganz interessant. > > Die aktuell vorhandene Perl5-Implementierung ist schon recht > geschickt. > > https://ptrace.fefe.de/wp/wp.pl > > W?rde hier eine Schwartzian Transform helfen, die vielen Hash-Lookups > zu vermeiden? https://en.wikipedia.org/wiki/Schwartzian_transform > > Herbert, hast du nicht Lust, eine Perl6-Implementierung einzureichen? > Wenn du das als Gist bei GitHub anlegst, k?nnten wir versuchen, > sie gemeinsam zu optimieren. Ich habe leider immer noch zu wenig > Perl6 gemacht, um mit einer sinnvollen Version zu starten:( > > Viele Gr??e > Daniel > _______________________________________________ > Leipzig-pm mailing list > Leipzig-pm at pm.org > https://mail.pm.org/mailman/listinfo/leipzig-pm > http://leipzig.pm.org/ -- Heiko Hartje heiko at hartje-it.de Hartje IT K?rnerstra?e 4 06114 Halle Telefon: +49 163 96 18 303, auch per Signal-App Internet: http://hartje-it.de/ From steffen at steffen-winkler.de Sun Mar 24 00:27:27 2019 From: steffen at steffen-winkler.de (Steffen Winkler) Date: Sun, 24 Mar 2019 08:27:27 +0100 Subject: [Leipzig-pm] =?utf-8?q?Perl5_und_Perl6_f=C3=BCr_Performance-Verg?= =?utf-8?q?leich_von_Fefe?= In-Reply-To: References: Message-ID: <02be7c78-ecc7-d21f-c07a-a80195082753@steffen-winkler.de> Das ist schon mal eine Doppelt geschachtelte Schleife: while (<>) { ?? chomp; ?? last unless $_; ?? for (split) { warum werden da array lengeh verglichen? ?? sort { @$b[1] <=> @$a[1] } Ich kenne aber auch die Aufgabenstellung nicht. Vielleicht kann man auch nach Guttmann sortieren. Wenn es anwendbar ist, also man einen Sortierschl?ssel erstellen kann, dann ist das noch schneller als Schwartz. Am besten man baut den Schl?ssel schon beim einlesen. Gr??e von Steffen Am 24.03.2019 um 01:01 schrieb Heiko Hartje: > Hallo Daniel, > > ich finde ?brigens nicht, da? Perl gut abschneidet in dem Test. > Eigentlich best?tigt es eher, was sowieso alle von Perl denken. Es sei > langsam. In diesem Test etwa die H?lfte langsamer als PHP und Java. > > Ich habe Deine Anregung aufgegriffen und mal untersucht, wie sich die > Geschwindigkeit ?ndert mit einer Schwartzschen Transformation. > > Beim urspr?nglichen Code kriege ich die Eingabe nicht beendet (unter > Windows). Deshalb habe ich einen Abbruch in die Schleife eingef?gt: > > #!/usr/bin/perl > use strict; > my %count = (); > while (<>) { > ?? chomp; > ?? last unless $_; > ?? for (split) { > ?????? $count{$_}++; > ?? } > } > my @keys = sort { $count{$b} <=> $count{$a} } keys %count; > foreach my $key (@keys) { > ?? print $key, ' ', $count{$key}, "\n"; > } > > Dann habe ich die Sortierung umgewandelt in ein map-sort-map: > > #!/usr/bin/perl > use strict; > my %count = (); > while (<>) { > ?? chomp; > ?? last unless $_; > ?? for (split) { > ?????? $count{$_}++; > ?? } > } > my @keys = map { $_->[0] } > ?? sort { @$b[1] <=> @$a[1] } > ?? map {[$_, $count{$_}]} keys %count; > foreach my $key (@keys) { > ?? print $key, ' ', $count{$key}, "\n"; > } > > Das habe ich zusammengebaut in eine einzige Datei: > > #!/usr/bin/perl > use strict; > use Time::HiRes qw(gettimeofday); > > my %count = (); > > while (<>) { > ?? chomp; > ?? last unless $_; > ?? for (split) { > ?????? $count{$_}++; > ?? } > } > > { > ?? my $start = gettimeofday(); > ?? my @keys = sort { $count{$b} <=> $count{$a} } keys %count; > ?? print gettimeofday() - $start, "\n"; > } > > { > ?? my $start = gettimeofday(); > ?? my @keys = map { $_->[0] } > ?????? sort { @$b[1] <=> @$a[1] } > ?????? map {[$_, $count{$_}]} keys %count; > ?? print gettimeofday() - $start, "\n"; > } > > Das Ergebnis ist ern?chternd (mit 1000 W?rtern des lorem-ipsum-Textes): > 0.000162124633789063 > 0.000192165374755859 > > Meine Vermutung: wenn die Vergleichsroutine ($a <=> $b) ausreichend > einfach ist, wird sie durch einen Aufruf kompilierten C-Codes ersetzt. > M?glicherweise geschieht dies auch noch bei $c{$a} <=> $c{$b}. > > Oder ich habe die Transformation falsch angewendet. Jemand eine Idee? > > Viele Gr??e > > Heiko > > perl -v > This is perl 5, version 16, subversion 1 (v5.16.1) built for > MSWin32-x64-multi-thread > > > > --On Samstag, 23. M?rz 2019 19:22 +0100 Daniel B?hmer > wrote: > >> Hallo, >> >> siehe https://blog.fefe.de/?ts=a2689de5 >> >> Alle Daten dazu: https://ptrace.fefe.de/wp/ >> >> Ich finde Performance f?r meine Zwecke nicht besonders wichtig, >> aber sch?tze es wert, dass Perl5 unter den Skriptsprachen insgesamt >> gut dasteht. Die Aktion von Fefe finde ich f?rs Marketing und >> aus Neugier ganz interessant. >> >> Die aktuell vorhandene Perl5-Implementierung ist schon recht >> geschickt. >> >> https://ptrace.fefe.de/wp/wp.pl >> >> W?rde hier eine Schwartzian Transform helfen, die vielen Hash-Lookups >> zu vermeiden? https://en.wikipedia.org/wiki/Schwartzian_transform >> >> Herbert, hast du nicht Lust, eine Perl6-Implementierung einzureichen? >> Wenn du das als Gist bei GitHub anlegst, k?nnten wir versuchen, >> sie gemeinsam zu optimieren. Ich habe leider immer noch zu wenig >> Perl6 gemacht, um mit einer sinnvollen Version zu starten:( >> >> Viele Gr??e >> Daniel >> _______________________________________________ >> Leipzig-pm mailing list >> Leipzig-pm at pm.org >> https://mail.pm.org/mailman/listinfo/leipzig-pm >> http://leipzig.pm.org/ > > >