Support Request #12026
closedPerformance-Problems with DDL-Codec
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.
Updated by hidden over 3 years ago
Nachtrag: Der oben beschriebene Ouput wird mit ca. 100 Hz (alle 10 ms) erzeugt.
Updated by hidden over 3 years ago
- Status changed from New to In Progress
- Topic set to ADTF::DDL
Updated by hidden over 3 years ago
Hi Patrick,
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.
Grüße,
Martin
Updated by hidden over 3 years ago
Danke für die Tips.
Das Ticket kann geschlossen werden.
Updated by hidden over 3 years ago
- Status changed from In Progress to To Be Closed
- Resolution set to Solved Issue
Updated by hidden over 3 years ago
- Subject changed from Performance-Probleme mit DDL-Codec to Performance-Problems with the DDL-Codec
- Description updated (diff)
Updated by hidden over 3 years ago
- Subject changed from Performance-Problems with the DDL-Codec to Performance-Problems with DDL-Codec
Updated by hidden over 3 years ago
- Status changed from To Be Closed to Closed
- Private changed from Yes to No