PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : relative Performanz von BASCOM



rossir
04.12.2011, 15:02
Hallo,

bis jetzt programmiere ich den AVR atmega328p16MHz (im ARDUINO) mit C (WINAVR). Mich würde mal interessieren wie schnell BASCOM im Vergleich zu C ist.

Hier mal ein C Programm von dem mich interessieren würde wie schnell das in BASCOM läuft:

int32_t fib(int32_t n) {
if(n < 2)
return 1;
else
return fib(n-2) + fib(n-1);
}

void fib_main() {
long t0;
int32_t i;
t0 = millis();
for(i=0;i<=30;i++) {
printf("Fibonacci of %ld is %ld in %ld ms\n", i, fib(i), (long)(millis()-t0));
}
return 0;
}

int main() {
init();
fib_main();
return 0;
}

Besserwessi
04.12.2011, 19:44
Eine groben Vergleich gibt es hier:

http://www.rn-wissen.de/index.php/Codevergleich_AVR-Compiler

Vermutlich wird für dieses Beispiel der Unterschied etwas kleiner ausfallen, weil die Multiplikation mit 32 Bit Zahlen relativ lange dauert, und da kann der C Compiler auch nichts dran ändern.
Dafür kann der Basic Compiler vermutlich beim Printf Boden gut machen - das ist nämlich ein eher ineffektiver Teil in C.

Der Algorithmus ist so oder so relativ ineffektiv um die Fibunacci-zahlen auszurechnen, also eher als Benchmark geeignet.