Excel Buffer in Dynamics NAV 2013: Geschwindigkeit ist keine Hexerei
Servus und Bongiorno!
Italien ist immer eine Reise wert. Gerade jetzt, da die Temperaturen locker 10 Grad über denen in Deutschland liegen. Neidisch? Wäre ich auch J Allerdings bin ich durchaus zum Arbeiten hier, was aber meine Freude darüber nur ein ganz klein wenig trübt.
Aber zum Thema: Mein werter Kollege Lars-Bo Christensen hat im NAV Team Blog zwei Artikel veröffentlicht, in denen es um die Umgestaltung und den Technologiewechsel der Excel Buffer-Funktionen geht. Wir nutzen dort nun, wie an den meisten Stellen in Dynamics NAV, keine Automations mehr, sondern .NET. Hier das Open XML SDK 2.0 für Microsoft Office. Mehr dazu in den folgenden englischsprachigen Artikeln.
Excel Buffer Using Open XML Instead of Excel Automation (Part 1 of 2)
Use Open XML to Extend the Excel Buffer Functionality (Part 2 of 2)
Hier soll es aber um etwas anderes gehen. Die in den Artikeln genutzten Tags NAV 2013, Office und Development sind aus meiner Sicht ein wenig emotionslos, da ein ganz entscheidender Hinweis fehlt: PERFORMANCE!
Das hat mein lieber Kollege Duilio Tacconi - und er bat mich ganz explizit, ihn als „Italian ***“ zu referenzieren – uns durch einige eigene Tests wissen lassen. Auch die Objekte stammen von Ihm. Vielen Dank Duilio
Und genau an dieser Performance-Demo möchte ich auch Sie teilhaben lassen. Sie basiert auf der Ausgabe der Tabelle 99000757 „Calendar Entry“ in eine Excel-Tabelle. Wenig funktional sinnvoll, aber effektiv für diesen Zweck. Im CRONUS finden sich in der Tabelle ca. 9400 Datensätze mit 18 Spalten. Also eine, wie ich finde, durchschnittliche Menge an Daten im Hinblick auf einen Export.
Die Testgestaltung ist recht übersichtlich. Im OnPreDataItem() Trigger werden die Überschriften ausgegeben:
Dann im OnAfterGetRecord() die Zeilen:
Und abschließend, im Trigger OnPostDataItem(), wird das Excel-Workbook erzeugt:
Die Erzeugung ist in Dynamics NAV 2013 etwas unterschiedlich gelöst, deshalb hier noch einmal der dortige Quellcode:
Die Laufzeit der Variante unter dem RoleTailored Client für Dynamics NAV 2009 R2 ist sehr… Sagen wir einfach, sie führt im Diagramm dazu, dass die Laufzeit unter Dynamics NAV 2013 nicht mehr sichtbar ist. Aus dem Grund lasse ich diese aus der Betrachtung heraus.
Prego!
Der Export unter Dynamics NAV 2009 R2 dauert 7 Minuten und 14 Sekunden. Unter Dynamics NAV 2013 allerdings nur – aufgerundet – 32 Sekunden. Die Performance ist also um den Faktor 13 bis 14 besser, läuft also dramatisch schneller.
Geschuldet ist das vor allem der Open XML Implementierung, die um einiges schneller ist. Übrigens betrifft das viele Bereiche in Dynamics NAV 2013.
Um die Performance auch in Dynamics NAV 2009 zu steigern, möchte ich Ihnen noch den folgenden Artikel meiner Kollegin Jasminka Thunes ans Herz legen: Export to Excel on Dynamics NAV: RTC.
Bis zum nächsten Post, Arrividerci!
Carsten Scholling
Microsoft Dynamics Germany
Microsoft Customer Service und Support (CSS) EMEA
Email: cschol@microsoft.com
Microsoft Connect: https://connect.microsoft.com
Online Support: https://www.microsoft.com/support
Sicherheitsupdates: https://www.microsoft.de/sicherheit
Microsoft Deutschland GmbH
Konrad-Zuse-Straße 1
D-85716 Unterschleißheim
https://www.microsoft.de
Comments
Anonymous
October 08, 2012
The comment has been removedAnonymous
October 08, 2012
Danke Hans Heinrich, das Prinzip dort scheint genau das aktuelle zu sein. Also eine gigantische Steigerung der Performance. Viele Grüße, CarstenAnonymous
October 30, 2012
The comment has been removed