Projekt HaWe brickbench Benchmark Test f. NXT, EV3 & andere CPUs

Allgemeines und oft gestellte Fragen (z.B. Baukästen, Anleitungen, Projekte...)

Moderator: Moderatoren

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon HaWe » 17. Dez 2013 08:58

hallo Martin,
hier habe ich den nxtOSEK mal schnell auf die aktuellen-Loop-Counter und den neuen Shellsort Algorithmus umgestellt.
Angepasst werden müssen bitte noch die Waits nach jedem Bildschirmaufbau, Gesamtwartezeit dann in main() entspr. subtrahieren.
Dann bitte anschl. die Laufzeiten testen, damit ich sie veröffentlichen kann!

Code: Alles auswählen

                   /* sample.cpp for TOPPERS/ATK(OSEK) */

/**
 * nxtOsek TOPPERS/ATK C/C++
 * Porting to nxtOSEK: Martin Aumair
 * Author: http://roboticsaumair.jimdo.com/
 * License: GNU GPL on all Files
 *
 * See also:
 * http://sourceforge.net/apps/phpbb/mindboards/viewtopic.php?f=3&t=2035&start=0
 * http://www.mindstormsforum.de/viewtopic.php?p=63607#p63607
 */


extern "C" {

#include "C:/cygwin/nxtOSEK/toppers_osek/include/kernel.h"
#include "kernel_id.h"
#include "C:/cygwin/nxtOSEK/ecrobot/c/ecrobot_interface.h"


DeclareResource(ostreamRes);
DeclareTask(TaskMain);
DeclareEvent(EventSleep);
DeclareEvent(EventSleepI2C);
DeclareCounter(SysTimerCnt);

} // extern C

#include <cmath>;
#include <cstdio>;

/*
mutex_t streammtx(ostreamRes);
ostream cout(streammtx);
#include "NLabel.hpp"
*/

/////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////OSEK HOOKS/IRS///////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////

extern "C" {

// nxtOSEK hook to be invoked from an ISR in category 2
void user_1ms_isr_type2(void){
   //SleeperMonitor();
   StatusType ercd;

   ercd = SignalCounter(SysTimerCnt); /* Increment OSEK Alarm Counter */
   if (ercd != E_OK) {
       ShutdownOS(ercd);
   }
}

// hooks
void ecrobot_device_initialize(void);
void ecrobot_device_terminate(void);



/////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////BENCHMARK FUNCTIONS////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////


int a[500], b[500], c[500], t[500];


//--------------------------------------------
// Mersenne Twister
//--------------------------------------------

unsigned long randM(void) {
   const int M = 7;
   const unsigned long A[2] = { 0, 0x8ebfd028 };

   static unsigned long y[25];
   static int index = 25 + 1;

   if (index >= 25) {
      int k;
      if (index > 25) {
         unsigned long r = 9, s = 3402;
         for (k = 0; k < 25; ++k) {
            r = 509845221 * r + 3;
            s *= s + 1;
            y[k] = s + (r >> 10);
         }
      }
      for (k = 0; k < 25 - M; ++k)
         y[k] = y[k + M] ^ (y[k] >> 1) ^ A[y[k] & 1];
      for (; k < 25; ++k)
         y[k] = y[k + (M - 25)] ^ (y[k] >> 1) ^ A[y[k] & 1];
      index = 0;
   }

   unsigned long e = y[index++];
   e ^= (e << 7) & 0x2b5b2500;
   e ^= (e << 15) & 0xdb8b0000;
   e ^= (e >> 16);
   return e;
}



void MatrixMatrixMult(int N, int M, int K, float A[][2], float B[][2], float C[][2]) {
   int i, j, s;
   for (i = 0; i < N; ++i) {
      for (j = 0; j < K; ++j) {
         C[i][j] = 0;
         for (s = 0; s < M; ++s) {
            C[i][j] = C[i][j] + A[i][s] * B[s][j];
         }
      }
   }
}


// matrix determinant

// !!double is in nxtOsek same as float
// no VLA!

float MatrixDet(int N, float A[]) {
   int i, j, i_count, j_count, count = 0;
   float Asub[N - 1][N - 1], det = 0;

   if (N == 1)
      return *A;
   if (N == 2)
      return ((*A) * (*(A+1+1*N)) - (*(A+1*N)) * (*(A+1)));

   for (count = 0; count < N; count++) {
      i_count = 0;
      for (i = 1; i < N; i++) {
         j_count = 0;
         for (j = 0; j < N; j++) {
            if (j == count)
               continue;
            Asub[i_count][j_count] = *(A+i+j*N);
            j_count++;
         }
         i_count++;
      }
      det += pow(-1, count) * A[0+count*N] * MatrixDet(N - 1, &Asub[0][0]);
   }
   return det;
}


//--------------------------------------------
// shell sort
//--------------------------------------------

void shellsort0(int size, int *array) {
   int iter, jter, inc, temp, i, j;
   for (inc = size / 2; inc > 0; inc /= 2) {
      for (i = inc; i < size; i++) {
         temp = array[i];
         for (j = i; j >= inc; j -= inc) {
            if (temp < array[j - inc]) {
               array[j] = array[j - inc];
            } else {
               break;
            }
         }
         array[j] = temp;
      }
   }
}

void shellsort(int size, int * A)
{
  int i, j, increment;
  int temp;
  increment = size / 2;

  while (increment > 0) {
    for (i = increment; i < size; i++) {
      j = i;
      temp = A[i];
      while ((j >= increment) && (A[j-increment] > temp)) {
        A[j] = A[j - increment];
        j = j - increment;
      }
      A[j] = temp;
    }

    if (increment == 2)
       increment = 1;
    else
       increment = (unsigned int) (increment / 2.2);
  }
}





//--------------------------------------------
// benchmark test procedures
//--------------------------------------------


int test_Int_Add() {
   int i=1, j=11, k=112, l=1111, m=11111, n=-1, o=-11, p=-111, q=-1112, r=-11111;
   int x;
   volatile long s=0;
   for(x=0;x<10000;++x) {
     s+=i; s+=j; s+=k; s+=l; s+=m; s+=n; s+=o; s+=p; s+=q; s+=r;
   }
   return s;
}



long test_Int_Mult() {

  volatile long s;
  int i, x, y;
  for(y=0;y<2000;++y) {
    i=1;
    s=1;
    for(x=0;x<13;++x) { s=s*i++;}
    i--;
    for(x=0;x<13;++x) { s=s/i--;}

  }
  return s;
}





float test_float_math() {

   float s = M_PI;
   int y;

   for (y = 0; y < 10000; ++y) {
      s *= sqrt(s);
      s = sin(s);
      s *= cos(10.5 * s);
      s = sqrt(s);
      s = exp(s);
   }
   return s;
}


long test_rand_MT() {
   volatile unsigned long s;
   int y;

   for (y = 0; y < 5000; ++y) {
      s = randM() % 10001;
   }
   return s;
}

float test_matrix_math() {
   int x;

   float A[2][2], B[2][2], C[2][2];
   float O[3][3], T[3][3];
   unsigned long s;

   for (x = 0; x < 250; ++x) {

      A[0][0] = 1;
      A[0][1] = 3;
      A[1][0] = 2;
      A[1][1] = 4;

      B[0][0] = 10;
      B[0][1] = 30;
      B[1][0] = 20;
      B[1][1] = 40;

      MatrixMatrixMult(2, 2, 2, A, B, C);

      A[0][0] = 1;
      A[0][1] = 3;
      A[1][0] = 2;
      A[1][1] = 4;

      MatrixDet(2, &A[0][0]);

      O[0][0] = 1;
      O[0][1] = 4;
      O[0][2] = 7;
      O[1][0] = 2;
      O[1][1] = 5;
      O[1][2] = 8;
      O[2][0] = 3;
      O[2][1] = 6;
      O[2][2] = 9;

      MatrixDet(3, &O[0][0]);

   }

   s = (O[0][0] * O[1][1] * O[2][2]);
   return s;
}



long test_Sort(){
  int y;

  for(y=0;y<50;++y) {
    shellsort(500, a);
    shellsort(500, b);
    shellsort(500, c);
  }

  return y;
}


// helper functions for output
// normally with cout our sprintf but I think in a benchmark we take the fastest method
void NumOut(int x, int y, int num, U32 places) {
   display_goto_xy(x, y);
   display_int(num, places);
}

void TextOut(int x, int y, const char *str) {
   display_goto_xy(x, y);
   display_string(str);
}

long test_TextOut() {

   int y;

   for (y = 0; y < 20; ++y) {
      // clear without update !? only clear buffer, this should be advantage for nxtOSEK
      display_clear(0);

      // x,y value is line not pixel! nxtOSEK use fast dma update in chars,lines!
      NumOut(0,0, 0, 1); NumOut(2,0, 1000, 4); TextOut(8,0, "int_Add");
      NumOut(0,1, 1, 1); NumOut(2,1, 1010, 4); TextOut(8,1, "int_Mult");
      NumOut(0,2, 2, 1); NumOut(2,2, 1020, 4); TextOut(8,2, "float_op");
      NumOut(0,3, 3, 1); NumOut(2,3, 1030, 4); TextOut(8,3, "rand_array");
      NumOut(0,4, 4, 1); NumOut(2,4, 1040, 4); TextOut(8,4, "matrx_algb");
      NumOut(0,5, 5, 1); NumOut(2,5, 1050, 4); TextOut(8,5, "arr_sort");
      NumOut(0,6, 6, 1); NumOut(2,6, 1060, 4); TextOut(8,6, "displ_txt");
      NumOut(0,7, 7, 1); NumOut(2,7, 1070, 4); TextOut(8,7, "testing...");

      display_update();
   }
   return 99;
}

U32 runtime[8];

void displayValues() {
   NumOut(0,0, 0, 1); NumOut(2,0, (int)runtime[0], 5); TextOut(8,0, "int_Add");
   NumOut(0,1, 1, 1); NumOut(2,1, (int)runtime[1], 5); TextOut(8,1, "int_Mult");
   NumOut(0,2, 2, 1); NumOut(2,2, (int)runtime[2], 5); TextOut(8,2, "float_op");
   NumOut(0,3, 3, 1); NumOut(2,3, (int)runtime[3], 5); TextOut(8,3, "rand_array");
   NumOut(0,4, 4, 1); NumOut(2,4, (int)runtime[4], 5); TextOut(8,4, "matrx_algb");
   NumOut(0,5, 5, 1); NumOut(2,5, (int)runtime[5], 5); TextOut(8,5, "arr_sort");
   NumOut(0,6, 6, 1); NumOut(2,6, (int)runtime[6], 5); TextOut(8,6, "displ_txt");
   NumOut(0,7, 7, 1); NumOut(2,7, (int)runtime[7], 5); TextOut(8,7, "testing...");
}

/////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////TASKS ///////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////


TASK(TaskMain) {
   unsigned long time0, x, y;
   float s;

   display_clear(1);

   TextOut(0, 0, "HaWe_Bench");
   TextOut(0, 1, "(C)H.Wunder 2013");
   TextOut(0, 3, "nxtOSEK port:");
   TextOut(0, 4, "Martin Aumair");
   TextOut(0, 5, "initializing...");

   systick_wait_ms(3000);

   for (y = 0; y < 500; ++y) {
      a[y] = randM();
      b[y] = randM();
      c[y] = randM();
   }

   display_clear(1);

   time0 = systick_get_ms();

   s = test_Int_Add();
   runtime[0] = systick_get_ms() - time0;


   time0 = systick_get_ms();
   s = test_Int_Mult();
   runtime[1] = systick_get_ms() - time0;


   time0 = systick_get_ms();
   s = test_float_math();
   runtime[2] = systick_get_ms() - time0;


   time0 = systick_get_ms();
   s = test_rand_MT();
   runtime[3] = systick_get_ms() - time0;


   time0 = systick_get_ms();
   s = test_matrix_math();
   runtime[4] = systick_get_ms() - time0;


   time0 = systick_get_ms();
   s = test_Sort();
   runtime[5] = systick_get_ms() - time0;


   time0 = systick_get_ms();
   s = test_TextOut();
   runtime[6] = systick_get_ms() - time0;


   /*
   time0 = systick_get_ms();
   s = test_graphics();
   runtime[7] = systick_get_ms() - time0;
*/
   runtime[7] = 0;

   displayValues();

   systick_wait_ms(10000);
   display_clear(1);
   y = 0;
   for (x = 0; x < 8; ++x) {
      y += runtime[x];
   }

   TextOut(0,0, "sum ms:");    NumOut(8,0, y, 7);
   TextOut(0,1, "benchmark:"); NumOut(8,1, 50000000/y, 7);

   TerminateTask();
}

}


was die noch fehlenden Grafik-Funktionen angeht:
kannst du Ellipse etc. nicht aus <graphics.h> importieren?
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Martin0x5E
Schreibt super viel
Schreibt super viel
Beiträge: 496
Registriert: 17. Dez 2011 11:39
Wohnort: Österreich

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon Martin0x5E » 17. Dez 2013 16:20

Danke fürs arbeit abnehmen, hatte aber damit gerade einen schwer zu findenden Laufzeitfehler.

Code: Alles auswählen

void shellsort(int size, double* A) 
void shellsort(int size, int* A)  // muss wie in deinen Programmen auch mit int sein



Grafikausgaben sind wie gesagt fertig nur das hier ist noch das Problem:

Zweites Problem: Ich schleife im Moment auch noch die efw mit nxtOSEK mit. Mit den Grafik-Ausgaben scheint mir jetzt der RAM während der RT auszugehen!
Das Programm ohne efw auszuführen funktioniert zwar; wollte ich aber noch mal als eigenen Benchmark anlegen da dann auch auf dem ROM geschrieben wird.

Kannst du irgendwie das Programm etwas kleiner machen? Zb die Arrays verkleinern, dafür mehr Iterationen?
Projekte und Informationen auf meiner Website: http://roboticsaumair.jimdo.com/

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon HaWe » 17. Dez 2013 16:32

ja, das war ein Tippfehler: musste int statt double heißen!
ich hab es in meinem Post oben schon korrigiert, als ich es entdeckte, da warst du allerdings wohl schneller ;)
mit int müsste es aber gehen, denke ich...?

Das mt den Arrays müsste auch gehen, ja.
Aber probier doch mal aus, ob es schon geht, wenn du denn array t[] rausnimmst und nur mit a[] und b[] arbeitest,
falls nicht, dann lösch auch b.
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Martin0x5E
Schreibt super viel
Schreibt super viel
Beiträge: 496
Registriert: 17. Dez 2011 11:39
Wohnort: Österreich

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon Martin0x5E » 17. Dez 2013 16:44

Ok habe jetzt wie du gesagt hast nach jeder Ausgabe eine Wartezeit gesetzt:

Code: Alles auswählen

long test_TextOut() {
   int y;

   for (y = 0; y < 20; ++y) {
      display_clear(0);

      // x,y value is line not pixel! nxtOSEK use fast dma update in chars,lines!
      NumOut(0,0, 0, 1); NumOut(2,0, 1000, 4); TextOut(8,0, "int_Add");
      NumOut(0,1, 1, 1); NumOut(2,1, 1010, 4); TextOut(8,1, "int_Mult");
      NumOut(0,2, 2, 1); NumOut(2,2, 1020, 4); TextOut(8,2, "float_op");
      NumOut(0,3, 3, 1); NumOut(2,3, 1030, 4); TextOut(8,3, "rand_array");
      NumOut(0,4, 4, 1); NumOut(2,4, 1040, 4); TextOut(8,4, "matrx_algb");
      NumOut(0,5, 5, 1); NumOut(2,5, 1050, 4); TextOut(8,5, "arr_sort");
      NumOut(0,6, 6, 1); NumOut(2,6, 1060, 4); TextOut(8,6, "displ_txt");
      NumOut(0,7, 7, 1); NumOut(2,7, 1070, 4); TextOut(8,7, "testing...");
      display_update();
      systick_wait_ms(20);
   }
   return 99;
}


Das Problem von vorher bleibt jedoch auch hier. Ergebnis = 1ms
Also ich würde vorschlagen wir lassen das Wait(20) ganz weg. Ohne Wait dauert es jetzt 17 ms.
Das heißt einmal alles Ausgeben (eine Iteration) dauert weniger als 1 ms. Aus dem Ganzen folgere ich jetzt das bei nxtOSEK display_update, also das wirklich physikalische Updaten, weniger als 1 ms dauert. Es ist ganz sicher das physikalische updaten, da bei einen Update nach jeder Ausgabe der Display flakert (Neuaufbau).

Lies dir einmal diesen Artikel durch: http://www.mikrocontroller.net/articles/DMA
Zusammengefasst: Das Updaten des Displays nimmt nicht wirklich Zeit im Prozessor in Anspruch sondern nur im DMA-Controller
Projekte und Informationen auf meiner Website: http://roboticsaumair.jimdo.com/

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon HaWe » 17. Dez 2013 16:46

wenn es dann mit a + b geht, könntest du probweise c[] auch nochmal mit rein nehmen.
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon HaWe » 17. Dez 2013 16:51

das mit dem Display-Update lassen wir dann eben jetzt so, ist dann eben wie es ist. Wenigstens haben wir dann alles probiert und der Code sieht identisch aus.
Sieht es denn optisch so aus, alle wenn er den ganzen Screen vollschreibt/vollmalt?
Bild1.jpg
Bild1.jpg (6.31 KiB) 2927 mal betrachtet
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Martin0x5E
Schreibt super viel
Schreibt super viel
Beiträge: 496
Registriert: 17. Dez 2011 11:39
Wohnort: Österreich

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon Martin0x5E » 17. Dez 2013 17:09

Funktioniert jetzt mit a+b+c, ohne t.
Projekte und Informationen auf meiner Website: http://roboticsaumair.jimdo.com/

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon HaWe » 17. Dez 2013 17:11

na super :)

dann poste doch schon mal Zwischenergebnisse samt Komplett-Code :)
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Martin0x5E
Schreibt super viel
Schreibt super viel
Beiträge: 496
Registriert: 17. Dez 2011 11:39
Wohnort: Österreich

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon Martin0x5E » 17. Dez 2013 17:50

Dein Bild ist verkehrt oder?
Sieh mal das Rechteck an. Wenn x20 y20 der Ursprung ist und man rechnet zu y+40 für die Höhe, dann müsste es schon fast ganz am unteren Rand des Bildschirms sein?!
Projekte und Informationen auf meiner Website: http://roboticsaumair.jimdo.com/

Martin0x5E
Schreibt super viel
Schreibt super viel
Beiträge: 496
Registriert: 17. Dez 2011 11:39
Wohnort: Österreich

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon Martin0x5E » 17. Dez 2013 17:51

Ah bei nxc ist links unten der Ursprung oder? :D
Projekte und Informationen auf meiner Website: http://roboticsaumair.jimdo.com/

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon HaWe » 17. Dez 2013 18:02

genau! :)
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Martin0x5E
Schreibt super viel
Schreibt super viel
Beiträge: 496
Registriert: 17. Dez 2011 11:39
Wohnort: Österreich

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon Martin0x5E » 17. Dez 2013 18:10

Es ist natürlich jetzt nicht ganz genauso da alles Verkehrt ist. Grundsätzlich sind die Formen alle gleich, wird also nichts zuviel oder zu wenig gemacht.
Was noch anders ist ist die for Schleife wo die Linie gezeichnet wird. Zum Schluss ergibt sich ein gefülltes Dreieck. Bei dir bleibt nur eine Linie?

Edit: In NXC existiert diese Zeile nicht?

Code: Alles auswählen

 for (x=0;x<50;++x) {LineOut(x,0,x,x);}
Projekte und Informationen auf meiner Website: http://roboticsaumair.jimdo.com/

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon HaWe » 17. Dez 2013 18:13

lt. Programm werden 2 Linien gezeichnet, drei umrandete Formen (Kreis, Quadrat, Ellipse) und 2 gefüllte Formen (Kreis, rechteck). Ein Dreieck ist mW nicht dabei, oder habe ich was falsch abkopiert?

Achso, du hast noch die alte Grafik-Routine!
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon HaWe » 17. Dez 2013 18:15

Code: Alles auswählen

long test_graphics(){
  int x;
  for(int y=0;y<100;++y) {
    ClearScreen();
    CircleOut(50, 40, 10);
    CircleOut(30, 24, 10, DRAW_OPT_FILL_SHAPE);
    LineOut(10, 10, 60, 60);
    LineOut(50, 20, 90, 70);
    RectOut(20, 20, 40, 40);
    RectOut(65, 25, 20, 30, DRAW_OPT_FILL_SHAPE);
    EllipseOut(70, 30, 15, 20);                    Wait(20);
                                                   // sum=20*100
  }
  return x;
}
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Benchmark Test NXT (NXC) vs. EV3 (BCC-C)

Beitragvon HaWe » 17. Dez 2013 18:58

die falsche bei nxtOSEK - oder wo?
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E


Zurück zu „Allgemeines zu Lego Mindstorms NXT und EV3“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 20 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss