WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Anzahl an Rechentakten / Rechenschritten ausgeben lassen

 

Pogostar
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 18.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2013, 10:48     Titel: Anzahl an Rechentakten / Rechenschritten ausgeben lassen
  Antworten mit Zitat      
Ich habe in Matlab zwei verschiedene Algorithmen für dieselbe Problemstellung entwickelt.

Ein Bewertungskriterium zwischen den Beiden soll die benötigte Rechenleistung darstellen.

Mit „tic“ und „toc“ lässt sich ja die benötigte Zeit „mitstoppen“.

Allerdings ist diese ja abhängig vom jeweiligen PC und davon, welche anderen Prozesse im Hintergrund aktiv sind.

Dementsprechend variiert die Zeit bei jeder Durchführung mehr oder weniger, sodass sich diese Messung für den Vergleich nicht optimal eignet.


Gibt es in Matlab eine Möglichkeit die Anzahl der benötigten Rechentakte zu protokollieren?
Damit hätte man meiner Meinung nach einen reproduzierbaren Vergleichsmaßstab.
Private Nachricht senden Benutzer-Profile anzeigen


BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 25.09.2013, 12:47     Titel:
  Antworten mit Zitat      
Hallo Pogostar,

das ist ein sehr komplexes Thema, wie in einem sehr guten Post von Jan erklärt wurde.

http://www.gomatlab.de/laufzeitverh.....2,highlight,laufzeit.html

Viele Grüße
Chris
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.09.2013, 13:57     Titel: Re: Anzahl an Rechentakten / Rechenschritten ausgeben lassen
  Antworten mit Zitat      
Hallo Pogostar,

Die Anzahl der benötigten Rechenschritte ist nicht eindeutig definiert, wie an oben genannter Stelle bereits erklärt wurde. Ein Thread kann z.B. auf einem Multi-Core-Prozessor vom Betriebssystem je nach Auslastung auf einen anderen Core verschoben werden. Das kostet aber Rechenzeit, die sich aus dem eigentlichen Programm nicht erklären lässt.

TIC/TOC ist also tatsächlich die beste Möglichkeit. CPUTIME misst zwar nur die mit Berechnungen verbrachte Zeit. Aber wäre eine minimale CPU-Time sinnvoll, wenn die eine Version Minuten damit vertrödelt auf die langsame Festplatte zuzugreifen, während die andere ein paar Sekunden länger die CPU benutzt?

Da die Laufzeit aber nun kritisch vom Computer-Modell abhängt, was sagt sie dann noch aus? Ergebnisse wie "doppelt so schnell" bedeuten für z.B. Wissenschaftler im Allgemeinen, dass man sich also genauso gut in zwei Jahren einen schnelleren Rechner kaufen kann. "Laufzeit steigt quadratisch oder kubisch mit der Problemgröße im relevanten Bereich an" ist schon hilfreicher. Wichtig ist aber, ob ein Programm in ertragbarer Zeit auf Maschinen läuft, die man sich zur Zeit leisten kann.
Erst bei Echt-Zeitanwendungen auf z.B. Smartphones ist die absolute Laufzeit ein hartes Kriterium und kann dann nur für jede individuelle maschine bestimmten werden.

Deine Frage zielt auf eine genauere Messung. Und ich halte dagegen, dass mehr als Wischi-Waschi nicht zu machen ist und auch gar nicht nützlich wäre. Sorry. Normalerweise versuche ioch produktiver an die Probleme heranzugehen ;-)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 26.09.2013, 08:50     Titel:
  Antworten mit Zitat      
Meine Rückfrage bezieht sich auf das Ziel der Untersuchung. Ist es nur ein (das ist legitim) akademisches Problem, dann kann ich nur in die verschiendenen Informationen einstimmen die die Schwierigekeit und Sinnhaftigkeit thematisieren.

Ist das Ziel die Beschleunigung einer Berechnung, kann ich nur empfehlen mit dem MathWorks Support zu reden. Nicht, dass hier an einem kleinen Hebel rumoptimiert wird, aber der grosse Hebel übersehen wird...

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.09.2013, 09:26     Titel:
  Antworten mit Zitat      
Hallo Andreas,

Zitat:
Nicht, dass hier an einem kleinen Hebel rumoptimiert wird, aber der grosse Hebel übersehen wird...

Stimmt. Genau das passiert sehr leicht. Die Wahl geeigneter Datenstrukturen wird gerne übersehen, es erfordert aber auch sehr viel Erfahrung zu erkennen, ob ein mehrdimensionales Array, ein Cell aus Structs, oder ein Struct mit Cells/Arrays als Representation besser geeignet ist. Am effizientesten für die Rechenzeit ist im Allgemeinen alle Daten und Strings in jeweils einem riesigen Array zu speichern und nur Teile davon an die jeweiligen Funktionen zu liefern. Das beduetet aber einen irrwitzigen Aufwand bei der Organisation der Indices und schon bei kleinen Programmen sind auch die ausgefuchstesten Programmierer schnell vollkommen vewirrt. Darum benutzen wir ja ein Betriebssystem und eine Hoch-Sprache wie Matlab, damit wir diesen Verwaltungskram hinter einfach nachzuvollziehenden Variablen-Namen etc. verbergen können.

Aber oft helfen schon kleine Veränderungen, etwa Matrizen spaltenweise statt zeilenweise zu bearbeiten. Dann kann der Prozessor auf benachbarte Elemente aus dem Cache zugreifen, statt jedes Elemtent zeitraubend einzeln aus dem Speicher holen zu müssen.

Mit einer gewissen Eitekeit möchte ich erwähnen, dass auch die Matlab Foren sehr hilfreiche Ratschläge für effiziente Daten-Strukturen geben können, zumal der Technische Support von Matlab ja auch hier kräftig mithilft. Darum an dieser Stelle wieder einmal: Ein massives Danke and das Support-Team!

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.