Benchmark CC-Pro Kategorie: CC-Pro Unit & Appl.Board (von PeterS - 1.12.2005 2:30) | |
| |
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 | |
Antwort schreiben Antworten: Re: Benchmark CC-Pro (von Henrik - 1.12.2005 12:21) Re: Benchmark CC-Pro (von Bernd - 1.12.2005 14:08) Re: Benchmark CC-Pro (von Dietmar - 2.12.2005 7:41) Re: Benchmark CC-Pro (von Bernd - 2.12.2005 9:36) Re: Benchmark CC-Pro (von PeterS - 2.12.2005 11:01) Re: Benchmark CC-Pro (von Walter - 6.12.2005 13:10) Re: Benchmark CC-Pro (von PeterS - 6.12.2005 13:41) Re: Benchmark CC-Pro (von Walter - 12.12.2005 15:25) Re: Benchmark CC-Pro (von PeterS - 12.12.2005 18:10) Re: Benchmark CC-Pro (von Bernd - 12.12.2005 16:28) Re: Benchmark CC-Pro (von Bernd - 12.12.2005 16:31) Re: Benchmark CC-Pro (von Walter - 12.12.2005 18:11) Re: Benchmark CC-Pro (von Bernd - 13.12.2005 10:51) Re: Benchmark CC-Pro (von Bernd - 2.12.2005 14:48) Re: Benchmark CC-Pro (von DIE HARD - 1.12.2005 12:00) Re: Benchmark CC-Pro (von Dietmar - 1.12.2005 8:25) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum