|
|
Anzahl an Rechentakten / Rechenschritten ausgeben lassen |
|
Pogostar |

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 18.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.09.2013, 10:48
Titel: Anzahl an Rechentakten / Rechenschritten ausgeben lassen
|
 |
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.
|
|
|
|
|
BlackDread |

Forum-Century
|
 |
Beiträge: 212
|
 |
|
 |
Anmeldedatum: 11.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2015a
|
 |
|
|
 |
|
Verfasst am: 25.09.2013, 12:47
Titel:
|
 |
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 25.09.2013, 13:57
Titel: Re: Anzahl an Rechentakten / Rechenschritten ausgeben lassen
|
 |
|
 |
|
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
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 26.09.2013, 08:50
Titel:
|
 |
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
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 26.09.2013, 09:26
Titel:
|
 |
|
 |
|
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
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|