javascript Ändern Sie die Fallgeschwindigkeit von Zeichenfolgen

7

Was ist schneller? toUpperCase () oder toLowerCase () in Javascript?

    
Timothy Ruhle 01.03.2011, 05:16
quelle

4 Antworten

13

Hier sind einige Testergebnisse von den wichtigsten Browsern (mehrere Monate alt). Es kommt zu dem Schluss, dass toLowerCase() schneller ist, aber es gibt keine Einsichten in warum bereitgestellt wird.

BEARBEITEN:

Ich habe den WebKit-JavaScript-Quellcode nur aus Neugier durchgesehen. Die Prototyp-Methoden .toUpperCase() und .toLowerCase() sind identisch mit Ausnahme einiger Aufrufe von .toASCIIUpper() , .toASCIILower() und Unicode::toUpper() und Unicode::toLower() . Bei der weiteren Untersuchung der ersten beiden Methoden habe ich gesehen, dass die Funktion .toLowerCase() etwas weniger komplex ist als die Funktion .toUpperCase() .

.toASCIILower() führt eine einfache Bitverschiebungslogik aus:

%Vor%

.toASCIIUpper() ist ein bisschen mehr beteiligt: ​​

%Vor%

Die statische Umwandlung und die zusätzliche bitweise Negation (~) in der .toASCIIUpper() -Funktion, die über eine Million Iterationen wiederholt wurde, könnten möglicherweise für die schlechtere Leistung verantwortlich sein.

Nun, das ist alles spekulativ; Ich habe weder wirklich getestet, noch habe ich versucht, diese Methoden vollständig zu verstehen, aber vielleicht kann jemand anders das ausarbeiten.

    
Cᴏʀʏ 01.03.2011, 05:22
quelle
3

Wie in Tests dieser Website heißt es

toLowerCase() is faster than toUpperCase()

    
Clyde Lobo 01.03.2011 05:23
quelle
2

Sie sollten identisch sein. Es ist möglich , dass sie für den Fall optimiert werden könnten, in dem alle Zeichen bereits Groß- / Kleinbuchstaben sind, aber dann würde es abhängen, in welchem ​​Fall sich die Zeichenfolge bereits befindet, z. 'abc'.toLowerCase() wäre schneller als 'ABC'.toLowerCase() , da keine neue Zeichenfolge zugewiesen werden muss. Ich kenne keine Implementierungen, die das tun.

Wirklich, der einzige Weg, das herauszufinden, ist, beide Funktionen mit verschiedenen Strings zu testen.

    
Matthew Crumley 01.03.2011 05:21
quelle
1

Hier sind meine Testergebnisse.

Browser: Google Chrome

Betriebssystem: Ubuntu

toLowerCase: 19.68 Sekunden

toUpperCase: 20,71 Sekunden

%Vor%     
dbyrne 01.03.2011 05:32
quelle

Tags und Links