Icicle: Destruktive Updates mittels Tardis-Monade und Stitching-Graph
Icicle, eine hochsprachige Streaming-Query-Sprache, kompiliert mit einem Struct-of-Arrays-Ansatz nach C. Um Reinheit zu gewährleisten, fügt der Compiler anfänglich Kopieroperationen vor Array-Mutationen ein. Dieser Beitrag beschreibt eine Optimierung unter Verwendung der Tardis-Monade und eines Stitching-Graphen, um die meisten dieser Kopien zu eliminieren, wodurch destruktive Updates ermöglicht und eine Laufzeitreduzierung von bis zu 50 % erreicht werden. Der Algorithmus erstellt einen Referenzgraphen, um Array-Referenzen zu verfolgen, und verwendet Vorwärts- und Rückwärtsdurchläufe mit der Tardis-Monade, um sichere destruktive Updates zu bestimmen. Dies kombiniert auf clevere Weise Konzepte der funktionalen Programmierung mit Kompilierzeitoptimierung und bietet einen neuartigen Ansatz zur Verbesserung der Leistung von Streaming-Query-Sprachen.