Vorheriger Beitrag: Termin für Microsoft Tech-Ed Europe 2010 steht
Wie multicore-optimiert ist Office 2010?
Wer immer noch glaubt, dass Multicore-Optimierungen, Multithreading und Co. nur etwas für Highend-Software-Lösungen sind, sollte sich mal etwas näher mit Office 2010 beschäftigen. Denn was Microsoft hier an Mühen insvestiert hat, um die aktuelle All-in-One-Lösung für den modernen PC-Arbeiter für vier, sechs und mehr Kerne zu optimieren, ist aller Ehren wert – und diesen Blogbeitrag.
Die einzelnen Bereiche und Tools wurden wie folgt an die moderne CPU-Architektur angepasst:
- Sämtliche Anwendungen wurden einem Multithreading unterzogen, was unter anderem schnelleres Öffnen und Speichern von Dokumenten ermöglicht.
- Beim Starten von Outlook werden mehrere Threads gleichzeitig gestartet, was dazu führt, dass parallel die Bedieneroberfläche aufgebaut, die Kalendereinträge geladen und die Voransicht der erhaltenen E-Mails angezeigt werden. Jeder Task bekommt also seinen eigenen Thread zugewiesen.
- Word erledigt dank Multithreading die Paginierung im Hintergrund, was Raum für andere Aufgaben zur selben Zeit lässt.
- In Excel werden Pivot-Tabellen parallel und damit deutlich schneller sortiert.
- Multithreading wird in Excel aber auch dazu eingesetzt, Berechnungen in den Hintergrund zu schieben, während gleichzeitig grafisch orientierte Arbeiten wie das Ändern der Zeilenhöhe oder das automatische Anpassen der Zellenbreite an die Inhalte vorgenommen werden.
Allerdings stand Microsoft beim Optimieren von Office 2010 an Multicore-Rechner vor einem erheblichen Problem: Wie können Tools wie Word oder Excel so verbessert werden, dass sie die häufigen Wartezeiten, die sich bei der Mensch-Maschine-Interaktion ergeben, möglichst minimieren? Daher wurden diejenigen Flaschenhälse identifiziert, die sich beispielsweise beim Start der Anwendung oder beim Öffnen oder Speichern einer Datei ergeben und Wartezeiten verursachen. Daran wurde dann verstärkt gearbeitet.
Nur setzt Microsoft immer noch sehr auf das funktionale Multithreading, bei dem die unterschiedlichen Aufgaben der Software eigenen Threads zugewiesen werden. Das ist zwar nicht sehr effizient (da diese Methode nicht optimal skaliert), aber wohl angesichts der hohen I/O-Aktivitäten zu vernachlässigen.



Trackbacks & Pingbacks