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 ***“ Smile zu referenzieren – uns durch einige eigene Tests wissen lassen. Auch die Objekte stammen von Ihm. Vielen Dank Duilio Smile

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:

clip_image002

Dann im OnAfterGetRecord() die Zeilen:

clip_image004

Und abschließend, im Trigger OnPostDataItem(), wird das Excel-Workbook erzeugt:

clip_image006

Die Erzeugung ist in Dynamics NAV 2013 etwas unterschiedlich gelöst, deshalb hier noch einmal der dortige Quellcode:

clip_image008

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!

clip_image009

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

ExcelBuffer.zip