Thread Performanteste ord()-Lösung gesucht (31 answers)
Opened by bianca at 2019-07-08 08:05

hlubenow
 2019-07-08 20:02
#190194 #190194
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
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)

View full thread Performanteste ord()-Lösung gesucht