. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Benchmark procesorů
4.října 2007 | Pandatron | Benchmark procesorů | Komentářů: 1  

Benchmark procesorů

Porovnání doby běhu tří krátkých kódů na několika 8 až 32 bitových procesorech. Předpokládám, že tento článek budu i nadále doplňovat o další.

Protože pracuji s řadou procesorů a navíc od několika rozličných firem, rozhodl jsem se napsat si tři krátké a běžně používané (to ovšem příliš neplatí pro první kód) kódy v jazyce C. Ty poté vždy zkompiluji na nějakém používaném překladači a změřím dobu jejich běhu.
Ještě bych rád dodal, že se tyto kódy nemohou nijak rovnat klasickým benchmarkům. Navíc jejich doba běhu je velmi závislá i na konkrétním překladači a jeho nastavení. A tak je doporučuji brát s rezervou, i když jistý přehled o rychlosti zkompilovaného kódu a samotného procesoru přeci jen poskytují.

1. pokus: float výpočty
Základní výpočty s řadou desetiných čísel.

Zdrojový kód:

float a;
float b;
float c;
unsigned long d;

c = b =
(float)0.00112424;
d = 0xC45D2A4B;
while (c <= 2.3652452) {
a +=
(float) (((float)214.101254 * ((float)1.2214124 + ((float)b * (unsigned long)d))) / ((float)0.012214 + (float)b));
c *=
(float)1.004254;
}

Výsledky:

Procesor Výrobce Popis   Výsledek
Atmega 48 Atmel 10MHz OPTIM=0   neskoncil!
Atmega 48 Atmel 10MHz OPTIM=2   0.368814 s
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=none sada=ARM   0.056365 s
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=none sada=THUMB   0.057156 s
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=3 sada=ARM   0.008807 s
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=3 sada=THUMB   0.009447 s
eCOG1 Cyan 16b, 100MHz & cache   2.240069 s
68HC908QY Freescale int OSC 13,8 MHz (bus 3,2MHz)   5.435415 s
PIC16F628 Microchip 4MHz PICC   6.093427 s
PIC18F4550 Microchip 48MHz PICC18   0.453179 s
PIC16F877 Microchip 20MHz PICC   1.256658 s
MSP430F2012 Texas Instruments 16b, 1MHz MSPGCC (0,33mA)   4.327084 s
MSP430F2012 Texas Instruments 16b, 16MHz MSPGCC (4,6mA)   0.274959 s

2. pokus: smyčka
Funkce for a v ní udělaná čekací smyčka.

Zdrojový kód:

unsigned long a;

for (a = 0; a < 1000000; a++);

Výsledky:

 

Procesor Výrobce Popis   Výsledek
Atmega 48 Atmel 10MHz OPTIM=0   3.090794 s
Atmega 48 Atmel 10MHz OPTIM=2   1.057377 s
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=none sada=ARM   0.605170 s
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=none sada=THUMB   0.605170 s
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=3 sada=ARM   0.208679 s
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=3 sada=THUMB   0.002921 s
eCOG1 Cyan 16b, 100MHz & cache   0.479969 s
68HC908QY Freescale int OSC 13,8 MHz (bus 3,2MHz)   40.970549 s
PIC16F628 Microchip 4MHz PICC   22.531532 s
PIC18F4550 Microchip 48MHz PICC18   1.670715 s
PIC16F877 Microchip 20MHz PICC   4.613595 s
MSP430F2012 Texas Instruments 16b, 1MHz MSPGCC (0,33mA)   9.984638 s
MSP430F2012 Texas Instruments 16b, 16MHz MSPGCC (4,6mA)   0.635929 s

3. pokus: smyčka ve funkci
Jako předchozí pokus, jen s tím rozdílem, že inkrementace proměnné se provádí ve funkci.

Zdrojový kód:

unsigned long a;

while (1) {
// LED = 0;
for (a=0; a<1000000;) a = test_func(a);
// LED = 1;
for (a=0; a<1000000;) a = test_func(a);
}

/* testovaci funkce */
unsigned long test_func (unsigned long value);
unsigned long test_func (unsigned long value) {
value++;
return value;
}

Výsledky:

 

Procesor Výrobce Popis   Výsledek   Rozdíl od testu 2
Atmega 48 Atmel 10MHz OPTIM=0   8.703023 s   + 180 %
Atmega 48 Atmel 10MHz OPTIM=2   1.952080 s   + 84 %
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=none sada=ARM   1.648567 s   + 172 %
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=none sada=THUMB   1.481623 s   + 145 %
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=3 sada=ARM   0.208679 s   0 %
AT91SAM7S32 Atmel ~50MHz CrossWork optimal=3 sada=THUMB   viz. následující řádek
  Zde se procesor chová jinak: Log.1 = 0.146075s ale Log.0 = 0.002504s  
eCOG1 Cyan 16b, 100MHz & cache   0.639958 s   + 33 %
PIC16F877 Microchip 20MHz PICC   12.213643 s   + 165 %
MSP430F2012 Texas Instruments 16b, 1MHz MSPGCC (0,33mA)   17.968610 s   + 80 %
MSP430F2012 Texas Instruments 16b, 16MHz MSPGCC (4,6mA)   1.141521 s   + 80 %






GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (9):

Zobrazit starší 30 dnů (9)...

host
9. Dne 29. 09. 2009 v 16:03 zaslal host
Prispevok
Len jedna poznamka, kompilator GCC, ak bol pouzity a mal zapnute optimalizacie O2, tak take veci ako for (;;) ; bezne vyhadzuje, pretoze ten kod nic nerobi. Ak chcete robit nejaky floating point test, tak odporucam to skusat na FFT.


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
SIM900 - GSM modul GPRS class 10 Quadband
GSM Quadband modul s podporou datových přenosů třídy GPRS class 10
Skladem od 415 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007