News combit Dev Blog

Unglaubliche Performancesteigerung beim Drucken

Veröffentlicht: Freitag, 28. Juli 2017 | 0 Kommentar(e)
 
Um die Performance weiter zu steigern, haben wir uns dazu entschlossen, uns auch den Druck genauer anzusehen. Die Optimierungen, die wir dabei gefunden haben, helfen, wenn die gleiche Tabelle mehrfach mit unterschiedlichen Feldern genutzt wird. Als Beispiel denke ich an einen tabellarischen Bericht mit einigen Diagrammen und einer Kreuztabelle. Typischerweise verwenden Sie unterschiedliche Ansichten auf Ihre Daten in den verschiedenen Berichtsobjekten. In diesem Fall ist die Beschleunigung wirklich riesig!

Seit einigen Versionen prüft List & Label bei Datenbankabfragen, welche Identifiers/Felder im Projekt tatsächlich genutzt werden und übergibt nur diese. Allerdings war diese Infomation nur global für die Datenbank und nicht für einzelne Tabellen verfügbar. Ein einfaches Beispiel: Wenn Sie früher eine Tabelle zweimal gedruckt haben, einmal mit den Feldern "FirstName", "Name", "Address" und "City" und dann mit einem Diagramm die Felder "Revenue" und "City" ergaben sich insgesamt fünf Identifiers ("FirstName", "Name", "Address", "City", "Revenue").

Bis LL23 übergibt der Databinding-Mechanismus die fünf Identifiers zweimal an den Bericht, einmal für die Tabelle und einmal für das Diagramm. LL23 unterscheidet nun zwischen den beiden Objekten und übergibt jeweils nur die benötigten Daten. Dadurch werden, je nach Größe Ihrer Datenbank, die Last auf Ihrem Datenbankserver immens gesenkt und unzählige API Aufrufe gespart. Ihre selbst geschriebenen Datenpovider profitieren davon bereits durch geringfügige Änderungen.

Ein weiterer gigantischer Performancezuwachs hängt damit zusammen: Wenn Berichtsparameter zum Filtern der Daten genutzt werden (beispielsweise der Parameter "City"), wurde bisher in LL22 der komplette Eintrag sogar dreimal übergeben. LL23 erkennt, dass der Parameter lediglich bestimmte Werte benötigt und optimiert die Abfrage bereits auf der Datenbankebene. Anstelle von

SELECT FirstName, Name, Address, City, Revenue FROM Customers

und dem Sammeln der bestimmten Städte in der Druckengine wird jetzt einfach nur ein

SELECT DISTINCT City FROM Customers

geschickt, was unendlich schneller ist.

Seeing is believing: Untenstehende Animationen zeigen den Vergleich zwischen LL22 und LL23 mit exakt dem selben Bericht.


LL22


LL23


Wo wir gerade bei der Performance sind: Wir haben auch den Speicherbedarf der Kreuztabelle extrem verbessert. Sie erkennen das insbesondere beim Druck von Kreuztabellen mit mehreren Schattenseiten. LL23 hat jetzt nur noch etwa den halben Speicherbedarf wie noch  LL22.




Autor: Jochen Bartlau
Entwicklungsleiter List & Label

Jochen Bartlau leitet als Geschäftsführer die Softwareentwicklung bei combit. Microsoft .NET und Agiles Projektmanagement sind zwei seiner Steckenpferde. Der technikbegeisterte Physiker verbringt seine Freizeit am liebsten mit seiner Familie.


  


Kommentare


Aktuell gibt es noch keine Kommentare zu diesem Blogbeitrag.

Ergänzen Sie hier Ihren Kommentar
 
 
 
 
 

Lassen Sie sich über neue Kommentare zu diesem Blogbeitrag informieren


 
RSS
combit Dev BlogRSS
combit Entwicklerblog
Hier teilen wir Informationen über die Entwicklung unserer Softwareprodukte. Außerdem: Allgemeines über die Softwareindustrie.
Archiv
November 2018 (2)
Oktober 2018 (4)
September 2018 (4)
August 2018 (2)
Juli 2018 (2)
Juni 2018 (2)
Mai 2018 (1)
April 2018 (1)
März 2018 (1)
Februar 2018 (2)
Januar 2018 (1)
Dezember 2017 (1)
November 2017 (2)
Oktober 2017 (3)
September 2017 (3)
August 2017 (2)
Juli 2017 (2)
Juni 2017 (1)
Mai 2017 (2)
April 2017 (1)
März 2017 (1)
Ältere Blogposts
Einträge aus dem Zeitraum von März 2014 bis Februar 2017 finden Sie in unserem englischsprachigen Blog.
+49 (0) 7531 90 60 10