INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Speicher-/Performance-Optimierung durch Schieberegister?



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

14.09.2010, 07:40 (Dieser Beitrag wurde zuletzt bearbeitet: 14.09.2010 07:45 von Matze.)
Beitrag #1

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
Hallo,

soweit ich weiß, werden von (konstanten) Eingängen an Schleifen bei jeder Iteration Kopien angelegt.
Ist es daher gängig bzw. sinnvoll, diese durch Schieberegister zu ersetzen?

Ich würde sagen: Ja
Bin mir aber nicht ganz sicher, da ich das bisher so nicht gesehen habe. Oder mir ist es nie aufgefallen.

Das Pufferzuweisungs-Tool hilft hier leider nicht weiter.

Ich habe 2 Beispiele angehängt, die das verdeutlichen (oben jeweils ohne Schieberegister, darunter mit).
Über den Sinn und Unsinn des Codes müssen wir nicht diskutieren. Das ist ledichlich zur Verdeutlichung gedacht.Wink

   

   

Grüße

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.09.2010, 07:51 (Dieser Beitrag wurde zuletzt bearbeitet: 14.09.2010 07:52 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
Hallo Mecha,

"soweit ich weiß, werden von (konstanten) Eingängen an Schleifen bei jeder Iteration Kopien angelegt."
Dies ist m.M.n. falsch. Wie man durch ConstantFolding gut sieht, wird bei konstanten Eingängen einmalig eine Kopie angelegt, die dann in jeder Iteration benutzt wird. (Es muss nicht mal eine Kopie sein...) Ein SR erzeugt halt nur unnötigen Overhead in einem solchen Fall... Konstanten einfach außerhalb der Schleife anlegen, fertig!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.09.2010, 08:18
Beitrag #3

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
Hallo Gerd,

danke. Du hast Recht.
Schieberegister haben einen großen Overhead, wie folgendes VI zeigt:

   

Ohne Schieberegister dauert die Messung ca. 12.700 ms, mit Schieberegistern ca. 12.815 ms, aalso rund 100 ms länger.

Grüße

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.09.2010, 08:20
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
Hallo Mecha,

noch ein Nachtrag: Warum benutzt du bei der Array-Initialisierung SRs und ReplaceArrayElement? Bei einer FOR-Loop mit bekanntem N ist LabVIEW so smart, solche Array effizient selbst anzulegen, sobald du AutoIndeing benutzt...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.09.2010, 08:31 (Dieser Beitrag wurde zuletzt bearbeitet: 14.09.2010 08:31 von Matze.)
Beitrag #5

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
Gute Frage, wieso ich das hier gemacht habe. Sonst nutze ich Auto-Indexing, wie man in der rechten Schleife sieht. *g*

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.09.2010, 15:00
Beitrag #6

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
' schrieb:Ohne Schieberegister dauert die Messung ca. 12.700 ms, mit Schieberegistern ca. 12.815 ms, aalso rund 100 ms länger.

Wie häufig hast du die Messung laufen lassen? Während 12 Sekunden kann ein normales Windowssystem viel nebenbei gemacht haben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.09.2010, 16:38
Beitrag #7

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
' schrieb:Wie häufig hast du die Messung laufen lassen? Während 12 Sekunden kann ein normales Windowssystem viel nebenbei gemacht haben.
Jeweils ca. 10 Mal, auch abwechselnd. Die Werte waren alle reproduzierbar (+/- wenige Millisekunden).

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.09.2010, 09:24
Beitrag #8

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
Ich weiss nicht was du gemessen hast bzw. wo LV Teile rausoptimiert hat, aber das Ausgangsterminal wurde in deinem Code sicher nicht komplett angelegt (es sei denn Du benutzt LV 64bit und hast richtig viel RAM im Rechner).

Mal so überschlagsweise:
X*Y*sizeof(DBL)
50000*50000*8B = 19073 MB = 18,6 GB

Anbei ein leicht abgeänderter Benchmarkversuch

Sonstige .vi  perfschieb_dual.vi (Größe: 20,12 KB / Downloads: 185)
LV2010
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.09.2010, 09:32
Beitrag #9

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
Hm, also das gestern lief irgendwie. Unsure

Deins zeigt im Endeffekt überall die gleichen Werte an. Setze ich die Größe deutlich rauf, ist der Speicher voll.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.09.2010, 09:41
Beitrag #10

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Speicher-/Performance-Optimierung durch Schieberegister?
' schrieb:Mal so überschlagsweise:
X*Y*sizeof(DBL)
50000*50000*8B = 19073 MB = 18,6 GB

Wieso 50000*50000 ?

Ich seh in dem Screenshot ein boolsches 1D-Array und ein dbl 1D-Array ... aber kein dbl 2D-Array mit 50k*50k...

Gruß SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Eigenversuch einer ComboBox - Optimierung und Kritik gesucht TpunktN 2 1.728 30.05.2023 07:56
Letzter Beitrag: TpunktN
  Verwendung Schieberegister de_la_questa 2 2.760 04.01.2021 17:26
Letzter Beitrag: GerdW
  Probleme mit Performance (Berechnungen und Grafik) catbull 5 3.876 21.07.2018 10:13
Letzter Beitrag: IchSelbst
  Performance beim Betrieb über WLAN Heber 9 4.820 22.08.2017 14:28
Letzter Beitrag: Heber
  Schieberegister Initialisierung mit Array => Not a Number Roland 7 7.392 03.07.2017 15:58
Letzter Beitrag: Roland
  Nachträgliche Optimierung von funktionierendem Prgramm Tyll 10 5.844 16.03.2017 14:11
Letzter Beitrag: Tyll

Gehe zu: