Programmierung Software mit Löchern

Forscher am Computer Science and Artificial Intelligence Laboratory des MIT in Cambridge (Massachusetts) haben ein Verfahren entwickelt, das Softwareprogramme beim Abarbeiten beschleunigen kann.

Die Idee scheint einfach: Man schaut sich die Computercodes an, ob nicht irgendwo anstatt übertrieben hohe Genauigkeit eine deutliche Beschleunigung des Programms eingetauscht werden kann. Das trifft natürlich nicht für jedes denkbare Programms zu. Profitieren können davon aber z.B. Videoprogramme, bei denen zu Lasten kleiner Details und Bildauflösung eine bis zu 50 % höhere Ablaufgeschwindigkeit erreicht werden kann. Ein Beispiel dafür demonstriert ein vom MIT veröffentlichtes Video.

Es zeigt in der unteren der zwei Zeilen das gleiche Video wie im oberen Original, ohne dass man Unterschiede sieht. Auch für Videokonferenzen ist das Verfahren gut geeignet wie auch für andere Programme, die Daten in Echtzeit übertragen müssen  - an der Börse zum Beispiel. Andere Anwendungsbeispiele sind die großen Suchmaschinen wie Google, Yahoo oder Bing, die in Bruchteilen einer Sekunde unglaubliche Datenmengen verarbeiten müssen. Da der Abfragende aber auf der ersten Seite anfängt zu lesen, kann man für die Bereitstellung der ersten Seite solche „Zeitverkürzungen“ gut gebrauchen.

Wie das funktioniert? Große Computerprogramme stoßen beim Ablauf immer wieder auf Programmstellen, an denen eine „Loop“ startet: Das ist eine Programmschleife, die bei vielen gleichartigen Abläufen immer und immer wieder automatisch abgearbeitet wird, bis das Zwischenergebnis vorliegt. Ganz besonders häufig werden solche Loops genutzt, um extrem lange Listen gleichartiger (aber nicht gleicher) Zahlen zu verarbeiten.

Das MIT-Programm stanzt nun „Löcher“ in diese Schleifen und vermeidet so die für die Aufgabe nicht unbedingt erforderliche Genauigkeit. Kann man die Hälfte dieser Programmschleifen für den erforderlichen Zweck rauswerfen, dann verkürzt sich auch die Abarbeitung des Programms entsprechend. Man muss das unter dem Blickwinkel der Wahrscheinlichkeit sehen: Die Eigenschaften von 1000 Amerikanern unterscheiden sich auf den ersten Blick ja auch nicht sehr von den Eigenschaften von nur 500 Amerikanern.

Interessanterweise ist das neue Programm selbst eine „Loop“: Es rennt durch das vorgesehene Arbeitsprogramm, stanzt Programmschleifen aus, arbeitet sie ab und betrachtet dann, welche Schleife bei kleinstem Qualitätsverlust die größte Ablaufbeschleunigung bietet – der Rest wird „ausgestanzt“.