Thread Performanteste ord()-Lösung gesucht
(31 answers)
Opened by bianca at 2019-07-08 08:05
Hier noch ein nicht ganz ernstgemeinter Vorschlag mit Inline::C.
Ich prüfe hier in einer C-Funktion nur darauf, ob in einem String ein negativer Char vorkommt. Scheinbar werden so Strings mit Umlauten und Sonderzeichen (also alles außerhalb ASCII) in C verarbeitet. Ich bin da aber wirklich sehr unsicher (kein C-Experte) und benutze auch Inline::C zum ersten Mal. Also, bitte nicht ernsthaft einsetzen, das ist nur als Spaßvorschlag unter Vorbehalt gemeint. Schnell ist es allerdings. :) Ich bin auch nicht sicher, was speichermäßig mit dem String passiert, also ob Perl irgendwie den Bereich für den "char *" wieder freigibt (das ist dann die Art von Problemen, die in C auftaucht). 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 #!/usr/bin/perl use warnings; use strict; use Inline 'C'; my $text = "ASCII-Wort"; my $umlaute = "Ölmüller"; my $euro = "\N{EURO SIGN}"; print checkBeyondOrd($text) . "\n"; print checkBeyondOrd($umlaute) . "\n"; print checkBeyondOrd($euro) . "\n"; __END__ __C__ int checkBeyondOrd(char *a) { while (*a != 0) { if (*a < 0) { return 1; } a++; } return 0; } Last edited: 2019-07-08 20:06:24 +0200 (CEST) |