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> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > Hallo, > > ich bin den Wünschen entgegengekommen und habe DIE HARDs Benchmark auf die CC-Pro umgesetzt. > Lediglich Instruction 44 + 45 gibt es in dieser Form nicht direkt bei der CC-Pro. Vielleicht das PULSEOUT > in einer Form doch, ich habe aber nicht alles in den Timer Routinen selbst entwickelt, so daß ich da > noch Grübel. Ich habe jeden falls nicht 53 sondern 51 auf INSTRUC addiert, so kommt es dem Nahe was > DIE HARD im Benchmark mißt. > > Man vergleicht hier nur Äpfel mit Birnen. Im Benchmark gibt es z.B. kein Select/Case Statement, wie es die > CC-Pro (und darin auch optimiert wurde) kennt um abhängig von Werten Anweisungen auszuführen wie z.b. > > Select Case a+2 > Case 1 > b=b*2 > Case 5*5 > b=b+2 > Case 100 And &Hf > b=b/c > Else > b=b+2 > End Case > > Auch sind in der CC-Pro die Bytecodes weniger spezialisiert, da das unterstützte C/BASIC globale und lokale > Variablen kennt, multidimensionale Arrays. Alles das verlangt eigene Bytecodes, das zur Folge hat, das die > CC-Pro für manche Konstrukte mehr Bytecodes braucht als die CC1. Die 51 Instruktionen im Benchmark > werden bei der CC-Pro zu 460 Bytecode Befehlen kompiliert. > > Ich habe es auch schon früher gesagt, die Features Fließkomma-Arithmetik, Multithreading, Interpreter IRQs, > Debuggen zur Laufzeit, Sprachkonstrukte wie globale und lokale Variablen, rekursive Funktionsaufrufe, > multi-dimensionale Arrays, PostIn- Dekrement in C, Funktionszeiger, Zeiger auf Arrays etc... kosten alle > Resourcen an Zeit in der Ausführung, und Platz als Flashspeicher für den Interpreter. Wer auf das alles > verzichten kann, der sollte aus Kostengründen zur CC1 greifen. Es sei denn er braucht auch noch mehr > Flashspeicher (ca. 110kb stehen in der M128 für das Applikationsprogramm zur Verfügung), oder mehr RAM > (bis zu 63kb mit externem RAM bei der M128). > Es sollte auf jeden Fall nicht nur die Geschwindigkeit das ausschlaggebende sein! > > > Auf der M128 habe ich einen Wert von 38097 I/s pro Sekunde gemessen. Das ist dann mehr als doppelt > soviel wie bei der CC1. Ja ich weiß, die läuft mit 8 Mhz und DIE HARD muß zum genauen Vergleich > TOG LED und PULSEOUT LED rausnehmen und nur 51 auf INSTRUC addieren. > > Warum werden im Benchmark eigentlich für die For/Next Schleifen 9 Instruktionen gezählt? Verstehe ich > nicht. Und was hat der DEACT in einem Benchmark zu suchen? > > Aber ich wette, irgendjemandem konnte ich auch mit diesem Benchmark nicht alles recht machen und > der wird sich dann hier beschweren. > > Gruss Peter > > > ------- Benchmark ------ > > Dim text(30) As Char > Dim ticks,INSTRUC As Word > > Sub IRQ1() > ticks=ticks+1 > Irq_GetCount(INT_TIM2COMP) > End Sub > > Sub main() > > Port_DataDirBit(PORT_LED1,PORT_OUT) > ADC_Set(ADC_VREF_VCC,0) > Irq_SetVect(INT_TIM2COMP,IRQ1) > > text="Running...." > Msg_WriteText(text) > > > Do While True > > BMX() > > Msg_WriteWord(INSTRUC) > End While > End Sub > > Sub BMX() > Dim WORDVAR,tab(1) As Word > Dim BO,BYTEVAR,COUNTER As Byte > Dim WCOUNTER As Integer > > tab(0)=0 > INSTRUC=0 > ticks=0 > Lab BMXRUN > BO=True 'INSTRUCTION 1 > BO=False 'INSTRUCTION 2 > '----------- BYTE OPERATIONS ---------------------- > BYTEVAR=BYTEVAR+BYTEVAR 'INSTRUCTION 3 > BYTEVAR=BYTEVAR << 4 'INSTRUCTION 4 > BYTEVAR=BYTEVAR*BYTEVAR 'INSTRUCTION 5 > BYTEVAR=BYTEVAR/BYTEVAR 'INSTRUCTION 6 > BYTEVAR=BYTEVAR-BYTEVAR 'INSTRUCTION 7 > BYTEVAR=tab(0) 'INSTRUCTION 8 > > '---------- WORD OPERATIONS -------------------------- > WORDVAR=WORDVAR+WORDVAR 'INSTRUCTION 9 > WORDVAR=WORDVAR << 4 'INSTRUCTION 10 > WORDVAR=WORDVAR*WORDVAR 'INSTRUCTION 11 > WORDVAR=WORDVAR/WORDVAR 'INSTRUCTION 12 > WORDVAR=WORDVAR-WORDVAR 'INSTRUCTION 13 > WORDVAR=tab(0) 'INSTRUCTION 14 > '---------- LOOPS ------------------------------------ > For WCOUNTER=1 To 10 'INSTRUCTION 15-24 > Next > For WCOUNTER=1 To 10 'INSTRUCTION 25-34 > Next > '---------- FLOW CONTROL ----------------------------- > Goto JUMP 'INSTRUCTION 35 > Lab JUMP > If BYTEVAR=0 Then ' INSTRUCTION 36 > Goto JUMP1 > End If > Lab JUMP1 ' INSTRUCTION 37 > If WORDVAR=0 Then > Goto JUMP2 > End If > Lab JUMP2 > > JSR() 'INSTRUCTION 38+39 > '---------- I/O OPERATIONS --------------------------- > Port_WriteBit(PORT_LED1,PORT_ON) 'INSTRUCTION 40 > Port_WriteBit(PORT_LED1,PORT_OFF) 'INSTRUCTION 41 > Port_WriteBit(PORT_LED1,BO) 'INSTRUCTION 42 > WORDVAR=ADC_Read() 'INSTRUCTION 43 > 'TOG LED 'INSTRUCTION 44 > 'PULSE LED 'INSTRUCTION 45 > Port_Write(PortD,&Hff) 'INSTRUCTION 46 > Port_Write(PortD,0) 'INSTRUCTION 47 > Port_Write(PortD,BYTEVAR) 'INSTRUCTION 48 > 'was hat DEACT in einem Benchmark zu suchen? > Port_DataDirBit(PORT_LED1,PORT_OFF) 'INSTRUCTION 49 > Port_DataDir(PortD,PORT_OFF) 'INSTRUCTION 50 > '--------------------------------------------------- > If ticks>=100 Then 'INSTRUCTION 51 > Return > End If > INSTRUC=INSTRUC+51 'INSTRUCTION 52 > Goto BMXRUN 'INSTRUCTION 53 > End Sub > > Sub JSR() > End Sub