|
|
Zeitkritischer Code -> MATLAB zu langsam. |
|
pusht |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 13.08.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.09.2009, 12:10
Titel: Zeitkritischer Code -> MATLAB zu langsam.
|
|
|
|
|
Hallo,
Ich habe eine Funktion, die 100 mal (=> 1 Periode = 10ms) in der Sekunde mittels Timer aufgerufen wird. Diese Funktion ist gegeben und kann nicht verändert werden.
Ich habe die durchschnittliche Timer-Periodendauer ausgerechnet, sie liegt bei ca. 35ms, damit 25ms zu lang für mein Vorhaben.
Ich suche nun Wege, meinen 100-Hertz-Plan ein zu halten.
Ich könnte die Frequenz zwar niedriger machen, aber dies würde die Qualität des Programms erheblich senken.
Wie kann ich mehr Performance rausholen, ohne die Timer-Funktion selbst zu verändern. (Darum werde ich mich kümmern, wenn ich erst absolut sicher bin, den richtigen Rahmen gewählt zu haben. Die Funktion zu editieren ist Detailwork; bitte nicht sagen 'wir müssen die funktion kennen', darum geht es hier garnicht.)
Ich suche lediglich eine Grundstrategie. Wie kann man neben laufender GUI eine hochfrequente, rechenintensive 'Schleife' realisieren?
Der Timer scheint ja MATLAB-intern nen eigenen Thread zu haben, damit hat man Multithreading, die GUI wird nicht blockiert. Ist der Timer aber die richtige Wahl für mein Vorhaben oder gibt es schnellere Wege so ne Schleife mit vorgegebener Frequenz ablaufen zu lassen?
FALLS der Timer NICHT die richtige Wahl ist, muss ich ja einen Weg finden ohne Timer multithreading zu realisieren. Wie ginge das?
FALLS der Timer DOCH der richtige Weg ist, gibt es eine Möglichkeit, durch Anpassung des Programmrahmens (Grundaufbau) Performance zu gewinnen? Gewisse Tricks etc?
Vielen Dank.
Gruß
|
|
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.09.2009, 12:50
Titel:
|
|
Hallo,
eine 100% Antwort habe ich nicht. Nur soviel: Timer ist der richtige Weg, würde ich genauso machen. Hast Du mal probiert, die Schleife einfach permanent laufen zu lassen, um zu sehen, ob der Thread-Overhead des Timers verantwortlich ist, oder der Code selber? Ich vermute letzteres, aber einen Versuch wäre es wert. Wenn es der Code selber ist, wird man um dessen Modifikation nicht herumkommen, wenn es der Timer sein sollte, kann man nochmal über die Konstruktion nachdenken ...
Titus
|
|
|
|
|
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 - 2024
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.
|
|