Thread Unicode::Collate -> sehr langsam? (26 answers)
Opened by bianca at 2014-12-27 18:42

bianca
 2015-12-29 17:39
#178960 #178960
User since
2009-09-13
6980 Artikel
BenutzerIn

user image
Habe jetzt mal folgende Tests auf Linux mit Perl 5.14.2 gemacht:

  • nur mit CPAN:Encode:
    Code (perl): (dl )
    1
    2
    
    use Encode qw(encode decode);
    print encode('iso-8859-15',join(' + ',sort {lc $a cmp lc $b} ('Vertrag',decode('windows-1252','Übel'),decode('windows-1252','Ärger'),decode('windows-1252','Renée'),decode('windows-1252','Öl'),decode('windows-1252','ßig'),'Renee',decode('windows-1252','ärgerlich'))));

    Quote
    Renee + Renée + Vertrag + ßig + Ärger + ärgerlich + Öl + Übel

  • mit CPAN:Encode und CPAN:locale:
    Code (perl): (dl )
    1
    2
    
    use locale;
    print encode('iso-8859-15',join(' + ',sort {lc $a cmp lc $b} ('Vertrag',decode('windows-1252','Übel'),decode('windows-1252','Ärger'),decode('windows-1252','Renée'),decode('windows-1252','Öl'),decode('windows-1252','ßig'),'Renee',decode('windows-1252','ärgerlich'))));

    Quote
    Renee + Renée + Vertrag + ßig + Ärger + ärgerlich + Öl + Übel

  • mit CPAN:POSIX und den Werten de_DE.ISO8859-1, de_DE.iso88591 oder de_DE:
    Code (perl): (dl )
    1
    2
    3
    4
    
    use POSIX qw(locale_h);
    use locale;
    setlocale(LC_CTYPE, "de_DE");
    print join(' + ',sort {lc $a cmp lc $b} ('Vertrag','Übel','Ärger','Renée','Öl','ßig','Renee','ärgerlich'));

    Quote
    Renee + Renée + Vertrag + ßig + Ärger + ärgerlich + Öl + Übel

  • mit CPAN:POSIX und den Werten de, german oder german.iso88591:
    Code (perl): (dl )
    1
    2
    3
    4
    
    use POSIX qw(locale_h);
    use locale;
    setlocale(LC_CTYPE, "de");
    print join(' + ',sort {lc $a cmp lc $b} ('Vertrag','Übel','Ärger','Renée','Öl','ßig','Renee','ärgerlich'));

    Quote
    Renee + Renée + Vertrag + Ärger + Öl + Übel + ßig + ärgerlich

  • nur mit CPAN:locale:
    Code (perl): (dl )
    1
    2
    
    use locale;
    print join(' + ',sort {lc $a cmp lc $b} ('Vertrag','Übel','Ärger','Renée','Öl','ßig','Renee','ärgerlich'));

    Quote
    Renee + Renée + Vertrag + Ärger + Öl + Übel + ßig + ärgerlich


Was kann ich noch versuchen?

Editiert von bianca: nur mit locale ergänzt
Last edited: 2015-12-29 17:43:20 +0100 (CET)
10 print "Hallo"
20 goto 10

View full thread Unicode::Collate -> sehr langsam?