Project

General

Profile

Actions

Support Request #12026

closed

Performance-Problems with DDL-Codec

Added by hidden over 3 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Customer:
CARIAD
Department:
D/CS-G33
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Affected Products:
Platform:
Windows 10 64bit
Topic:
ADTF::DDL
FAQ Links:

Description

Support Anfrage:

Wir übertragen mittels Media Description Codec eine recht große Datenstruktur zwischen zwei Plugins. Das Struct sieht wie folgt aus: * eine Liste mit bis zu 40 Objekten * jedes Objekt hat wiederum 64 Elemente * Flach gesehen geht es insgesamt um 2572 Elemente, sollten alle 40 Objekte wirklich gesetzt werden

Schon bei 6 Objekten kriege ich merkliche Performance-Probleme auf meinem HP zBook.

In der Loop werden also Codec-bezogene Aufrufe der folgenden Art je Element getätigt:

access_element::find_index(m_oCodecFactory, "lstObj[" + cString::FromType(nObj)  + "].bIsStatic", nMediaDescIdx);
oCodec.SetElementValue(nMediaDescIdx, i_sObjList[nObj].bIsStatic); 

Habt ihr einen Tip, wie man hier mehr Performance reinkriegt? Als letzte Lösung überlegen wir, den Codec wegzulassen und die Struktur selbst zusammenzusetzen.

Lösung:

Die schnellste Variante ist es die Struktur einfach direkt als C-Struktur im Sample zu befüllen. Die DDL beschreit ja dann genau diese Struktur, das hat also keinen Nachteil. Ein Codec macht nur Sinn wenn Ihr die Struktur nicht kennt und dynamisch befüllen müsst (z.b. über eine Konfigurationseinstellung, etc.).

Ansonsten kann man das ganze noch beschleunigen, wenn ihr die teure stringbasierte Suche mit find_index in die Initialisierung verschiebt und die Indizes cached, dann sollte man nahe an die C-Struktur Variante herankommen.

Actions

Also available in: Atom PDF