PIC32 rychlost atd...

Petr Labaj labaj na volny.cz
Pondělí Únor 4 19:20:42 CET 2013


Tak jsem neco nasel:

Test je 10 000 pruchodu.
Prvni sloupec je vzdy cas v sekundach.

PIC32, GCC 4.5.1, MPLAB C32 v2.02:
18.4 (PIC32F795L, 80 MHz, Flash, globalni pole, 93.1 mA)
18.4 (PIC32F795L, 80 MHz, Flash, lokalni pole, 95.9 mA)
18.4 (PIC32F795L, 80 MHz, RAM globalni pole flags, 92.8 mA)
20.5 (PIC32F795L, 80 MHz, RAM lokalni pole flags, 100.7 mA)

STM32F4, GCC 4.6.2, Yagarto:
10.9 (globalni pole, STM32F407VG, 168 MHz, code Flash/data RAM, 33.9 mA)
12.4 (lokalni pole, STM32F407VG, 168 MHz, code Flash/data RAM_CCM, 35.9 mA)
11.0 (globalni pole, STM32F407VG, 168 MHz, code Flash/data RAM, 34.3 mA)
13.0 (lokalni pole, STM32F407VG, 168 MHz, code Flash/data RAM, 35.8 mA)
16.1 (globalni pole, STM32F407VG, 168 MHz, code RAM/data RAM_CCM, 41.7 mA)
20.7 (lokalni pole, STM32F407VG, 168 MHz, code RAM/data RAM_CCM, 40.7 mA)
17.1 (globalni pole, STM32F407VG, 168 MHz, code RAM/data RAM, 41.5 mA)
20.9 (lokalni pole, STM32F407VG, 168 MHz, code RAM/data RAM, 40.7 mA)

22.8 (globalni pole, STM32F407VG, 80 MHz, code Flash/data RAM_CCM, 16.9 mA)
25.8 (lokalni pole, STM32F407VG, 80 MHz, code Flash/data RAM_CCM, 17.0 mA)
22.8 (globalni pole, STM32F407VG, 80 MHz, code Flash/data RAM, 17.1 mA)
26.9 (lokalni pole, STM32F407VG, 80 MHz, code Flash/data RAM, 16.9 mA)
33.5 (globalni pole, STM32F407VG, 80 MHz, code RAM/data RAM_CCM, 16.5 mA)
43.7 (lokalni pole, STM32F407VG, 80 MHz, code RAM/data RAM_CCM, 16.3 mA)
35.7 (globalni pole, STM32F407VG, 80 MHz, code RAM/data RAM, 16.4 mA)
43.7 (lokalni pole, STM32F407VG, 80 MHz, code RAM/data RAM, 15.9 mA)

Vlastni test:

#define TRUE 1
#define FALSE 0
#define size 8190

#define ITER 10000

char flags [size+1];

void eratos (void)
{
// char flags [size+1];

 register int ii, k;
 register int prime, count, iter;

 STM_EVAL_LEDOn (LED6);      // signalizace LED start STM32F4_discovery
// LATD = 6;         // signalizace LED start PIC32

 for (iter=1; iter<=ITER; iter++) {
  count = 0;
  for (ii=0; ii<=size; ii++) {
   flags [ii]=TRUE;
  }
  for (ii=0; ii<=size; ii++) {
   if (flags [ii]) {
    prime = ii+ii+3;
    for (k=ii+prime; k<=size; k+=prime) {
     flags [k] = FALSE;
    }
    count++;
   }
  }
 }

 STM_EVAL_LEDOn (LED3);      // signalizace LED end STM32F4_discovery
 STM_EVAL_LEDOff (LED6);
// LATD = 1;         // signalizace LED stop STM32
}

PL


Další informace o konferenci Hw-list