2010-09-23 8 views

Antwort

5

Die ‚bessere‘ Art und Weise wäre:

var nameparts= ['Bob']; 
nameparts.push(' is a good name'); 
... 
nameparts.join(''); 

Allerdings sind die meisten modernen JavaScript-Implementierungen jetzt naive Verkettung erkennen und kann in vielen Fällen optimieren es weg, weil so viele Leute haben (leider) geschrieben Code auf diese Weise. In der Praxis wird die "gute" Methode also heute nicht so schnell sein wie früher.

+0

Richtig - ich denke, es ist eine Schande, schönen Code mit eng fokussierten Optimierungstechniken zu vermasseln. Nun, das sagte, IE6 war in manchen Situationen wirklich so schrecklich langsam, dass dieser spezielle Trick wirklich gut ist. Für zwei oder drei Verkettungen ist es albern, aber für Zahlen so niedrig wie die niedrigen Hunderte kann es einen überraschenden Unterschied machen. – Pointy

+0

Haben Sie eine Liste der Implementierungen, die dies optimieren? – bobber205

+0

Ich modifiziere einige ältere JS-Code und die Funktion, die 40% der Ausführungszeit gemäß Firebug dauerte, ist meist nur String-Verkettungen. – bobber205

1

Ein enormer Leistungsschub kann durch einfaches Verwenden von Zwischensaiten erzielt werden! Es ist möglich, eine StringBuffer-ähnliche Klasse in JavaScript zu erstellen, um noch mehr Leistungssteigerung zu erzielen.

Siehe den vollständigen Artikel und Grafiken here.

0

Ich las einmal einen Artikel zu diesem Thema, die einige Code-Anbieter gepuffert Strings mit Arrays zu bauen:

http://www.softwaresecretweapons.com/jspwiki/javascriptstringconcatenation

Getestet habe ich es mir und es war viel in IE schneller ... und Weise langsamer Feuerfuchs!

Zusammenfassend: Es gibt viele JavaScript-Engines und wir können uns nicht wirklich auf diese Art von Implementierungsdetails verlassen. Wenn es jemals ein Problem ist, werden Sie feststellen. Vorher interessiert es dich nicht zu sehr.

1

Die Effizienz der String-Verkettung hängt von einem Browser ab, den Sie verwenden. Sie können nach Statistiken googlen, es gibt auch einen GoogleTalk auf Youtube. Soweit ich mich erinnern kann, befassen sich die meisten Browser effizient mit String-Verkettungen, wenn die Anzahl der Elemente unter einigen Tausend liegt. Danach verlangsamt IE sich exponentiell, wenn Firefox, Chrome und Safari besser laufen. Dies kann sich ändern, da IE9 nicht mehr so ​​weit weg ist.