Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Ich hab ein kleines Benchmark Tool geschrieben. > Es soll vergleichen, welche von zwei Funktionen in verschiedenen Umgebungen besser/schneller arbeitet. > Es ist nichts für Newbies und sollte wie alle Benschmarkergebnisse mit Vorsicht genossen werden. > Das Programm kann aber eine nützliche Hilfe beim Erstellen und Vergleichen von Programmteilen sein. > Das Teil ist als Vorschlag und nicht als ultimativ fertiges Programm zu sehen.. nur für den Fall, das jemand > was auszusetzen hat. Ich gehe nur auf Diskussionen ein wenn derjenige auch am Programm arbeitet! > > /*******************************************************/ > /* Bfast Benchmark Tool V1.0 für CC2 / Multithreading */ > /* Das Tool soll eine Möglichkeit zur Abschätzung des */ > /* des Laufzeitverhaltens von CC2 c2 Programmen geben */ > /* Copyright by Rolf Diesing, rolf(at)diesing.net */ > /* SourceCode, und rechtliche Aspekte siehe GNU/GPL */ > /* !! Benötigt werden aktuelle Versionen von lcdext !! */ > /* !!! die Benchmarkergebnisse sind nur Richtwerte !!! */ > /*******************************************************/ > /* Derzeit wird nur die Anzahl der bearbeiteten */ > /* Threadscheifen gezählt und verglichen. Mit Timern */ > /* wäre das natürlich viel besser zu lösen... */ > /*******************************************************/ > /* Funktionsprinzip: Stadium 1 */ > /* Es wird die Laufzeit von je einem Thread berechnet */ > /* Funktionsprinzip: Stadium 2 */ > /* Es wird die Laufzeit von beiden Threads verglichen */ > /* Funktionsprinzip: Stadium 3 */ > /* Es wird die Laufzeit von beiden Threads verglichen */ > /* es läuft dabei ein zeitfressender Thread mit */ > /* gleicher Priorität wie die anderen beiden */ > /* Weitere Szenarien sind denkbar. */ > /*******************************************************/ > /* Wer möchte, kann sich hier austoben... */ > /*******************************************************/ > > //here we go... > > /*******************************************************/ > /* Variablen/Constantensatz für Testfunktionen (static)*/ > /*******************************************************/ > long DT1; // counter Demothread 1 > long DT2; // counter Demothread 2 > long DTL; // counter Lastthread 3 > int godemo; //Semaphore um den Threadstart zu handeln > long cnt; // Variable, die der Lastthread unendlich hochzählt > /*******************************************************/ > /* Platz Eigene Variablen (static) */ > /*******************************************************/ > //--> > > int var1; //für demo1 > long var2; //für demo2 > > /*******************************************************/ > thread demo1 > { > wait godemo; > DT1=DT1 + 1; > /*******************************************************/ > /* Start der eigenen Testfunktion 1 */ > /*******************************************************/ > //--> > > var1=var1+1; > > /*******************************************************/ > /* Ende der eigenen Testfunktion 1 */ > /*******************************************************/ > } > thread demo2 > { > wait godemo; > DT2=DT2 + 1; > /*******************************************************/ > /* Start der eigenen Testfunktion 2 */ > /*******************************************************/ > //--> > > var2=var2+1; > > /*******************************************************/ > /* Ende der eigenen Testfunktion 2 */ > /*******************************************************/ > } > thread demolast > { > /*******************************************************/ > /* LastThread, bitte an eigene Wünsche anpassen */ > /*******************************************************/ > cnt=cnt+1; > } > /*******************************************************/ > thread main > { > int i; //schleifenzähler in main > DT1=0; > DT2=0; > DTL=0; > godemo=0; > lcdext.init(); > > /* Stadium 1 */ > lcdext.print("Bfast V1.0 mono"); > lcdext.line(2); > > run demo1; // ersten Thread testen > godemo=-1; > sleep 1000; > godemo=0; > halt demo1; > lcdext.zahl(DT1); // Ausgabe erster Thread (leer ca. 3350/Sek) > // Je höher die Werte, um so besser > > run demo2; // zweiten Thread testen > godemo=-1; > sleep 1000; > godemo=0; > halt demo2; > lcdext.zahl(DT2); // Ausgabe zweiter Thread (leer ca. 3350/Sek) > // Je höher die Werte, um so besser > > // beep, kann wegfallen, ist nur damit ich meine Ergebnisse nicht verpenne! > plm.beep (12); > sleep 500; > plm.beep (-1); > // beep > > sleep 10000; > /* Stadium 2 10 Sek. für das erste AHA-Erlebnis */ > DT1=0; // Vorbereitung > DT2=0; > > lcdext.clear(); > lcdext.print("Bfast V1.0 duo"); > lcdext.line(2); // Und los gehts... > > run demo1; // zweiten Thread testen > run demo2; // ersten Thread testen > godemo=-1; > sleep 1000; > godemo=0; > halt demo1; > halt demo2; > lcdext.zahl(DT1); // Ausgabe erster Thread (leer ca. 1950/Sek) > lcdext.zahl(DT2); // Ausgabe zweiter Thread (leer ca. 1950/Sek) > // Sind die Werte stark unterschiedlich, hat man schon mal Angaben > // über die Leistungsfähigkeit. Die F. mit höheren Werten ist > // schneller. Das bedeutet jedoch noch nicht, das sie auch besser ist. > > // beep, kann wegfallen, ist nur damit ich meine Ergebnisse nicht verpenne! > plm.beep (12); > sleep 500; > plm.beep (-1); > // beep > > sleep 10000; > /* Stadium 3 10 Sek. für das zweite AHA-Erlebnis */ > DT1=0; // Vorbereitung > DT2=0; > > lcdext.clear(); > lcdext.print("Bfast V1.0 multi"); > lcdext.line(2); // Und los gehts... > > run demo1; // zweiten Thread testen > run demo2; // ersten Thread testen > run demolast; // Lastthread starten > godemo=-1; > sleep 1000; > godemo=0; > halt demo1; > halt demo2; > halt demolast; > lcdext.zahl(DT1); // Ausgabe erster Thread (leer ca. 700/Sek) > lcdext.zahl(DT2); // Ausgabe zweiter Thread (leer ca. 700/Sek) > // Auch hier sollten die Werte möglichst hoch sein und > // Bei drei Threads ist die Summe aller Schleifen nur noch 2100 > // Bei zwei Threads waren es fast 3900 > // Bei einem Thread "nur" 3350, man verschenkt also Rechenleistung > // wenn man ein Programm nur in einen Thread schreibt... > > // beep, kann wegfallen, ist nur damit ich meine Ergebnisse nicht verpenne! > plm.beep (12); > sleep 500; > plm.beep (-1); > // beep > quit 63; > } > > Hallo Andrè, sorry wegen dem Listing aber es muste sein :-) > Gruß Rolf
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB