Firefox spart Speicher mit neuer String-Codierung

Statt der bisher benötigen zwei Bytes wird der freie Browser für die häufig benutzten Zeichen der Latin1-Codierung nur noch eines benötigen. Das reduziert den Speicherverbrauch und steigert das Tempo.

In Pocket speichern vorlesen Druckansicht 212 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Christian Kirsch

Die Umstellung der internen JavaScript-Zeichenkodierung von UTF-16 auf Latin 1 spart rund 40 Prozent Speicherplatz für Strings.

(Bild: https://blog.mozilla.org/javascript/2014/07/21/slimmer-and-faster-javascript-strings-in-firefox/)

In einem zweimonatigen Projekt hat der Firefox-Entwickler Jan de Mooij die Verarbeitung von Zeichenketten in JavaScript grundlegend umgebaut. Statt der bisherig durchgängig benutzten UTF-16 Codierung verwendet die Engine jetzt wo immer möglich Latin 1. Dafür benötigt sie nur ein Byte pro Zeichen, UTF-16 braucht das Doppelte. Diese interne Optimierung soll keinerlei Änderungen an JavaScript-Programmen erfordern.

Erwartungsgemäß halbiert die Umstellung den von Strings belegten Speicherplatz bei dem überwiegend Latin 1 nutzenden GMail nahezu: Über 90 Prozent der Zeichenketten ließen sich in der sparsameren Variante speichern. Selbst bei asiatischen Websites bringe die Umstellung Vorteile, schreibt de Mooij. Auf den zehn populärsten chinesischen Seiten benötigten nur rund 28 Prozent der Zeichen zwei Byte. UTF-8 sei keine sinnvolle Alternative zu Latin 1 gewesen. Diese Codierung verwendet pro Zeichen zwischen einem und vier Byte, was etwa das Finden eines Zeichens in einem String erschwert.

Die Umstellung spart nicht nur Speicherplatz, sondern beschleunigt auch die JavaScript-Verarbeitung. So soll der SunSpider-Benchmark für reguläre Ausdrücke rund 36 Prozent Tempozuwachs bringen. Das liegt unter anderem daran, dass viele der kleineren Latin-1-Strings sich inline speichern lassen. Dadurch entfallen die zeitintensiven Aufrufe von malloc und free, mit denen sonst Speicher angefordert und wieder freigegeben werden muss.

Die Änderungen finden sich bislang in den Nightly Builds von Firefox und sollen in der nächsten Woche in der Alpha-Version (Aurora) ankommen. Allgemein verfügbar könnten sie mit Firefox 33 werden, der am 14. Oktober 2014 erscheinen soll. (ck)