04-11-2014, 18:55
Kurcze! Waldek o tym nie pomyślałem...
Cały czas projekt traktowałem jako swojego rodzaju zabawę... Ale pomysł jest całkiem niezły, z tym że nie wszyscy korzystali z SVN-a. Pewnie będziesz musiał z tym pomóc.
A właśnie jeśli chodzi o zabawę to dzisiaj przed sniadaniem chciałem sprawdzić w praktyce to o czym mówił Jakub SP2IPT, a mianowicie jakie są różnice w czasie wykonania operacji na IF-ach i SWITCH-ach.
Doszedłem do tego że robiąc różne operacje w środku tego kodu wyniki testu są niejednoznaczne... Popróbujcie sami kod poniżej
Jako następne ćwiczenie sprawdźcie co się stanie jeśli w procedurze "switch" i procedurze "if", wykonamy jakąś operację która jest prosta i szybka na przykład zmiana wartości zmiennej czy coś podobnego...
Myślę że taką analizę co kompilator robi z naszymi poleceniami to mógłby wykonać ktoś kto posiada znajomośc assemblera
Cały czas projekt traktowałem jako swojego rodzaju zabawę... Ale pomysł jest całkiem niezły, z tym że nie wszyscy korzystali z SVN-a. Pewnie będziesz musiał z tym pomóc.

A właśnie jeśli chodzi o zabawę to dzisiaj przed sniadaniem chciałem sprawdzić w praktyce to o czym mówił Jakub SP2IPT, a mianowicie jakie są różnice w czasie wykonania operacji na IF-ach i SWITCH-ach.
Doszedłem do tego że robiąc różne operacje w środku tego kodu wyniki testu są niejednoznaczne... Popróbujcie sami kod poniżej
Kod:
//kilka zmiennych
unsigned long time_start = 0;
unsigned long time_stop = 0;
unsigned long if_execution_time = 0;
unsigned long switch_execution_time = 0;
int test_zmienna = 0;
int test_val = 1;
//setup odpalamy port szeregowy
void setup(){
Serial.begin(9600);
delay(3000);
}
//pętla główna
void loop(){
//sprawdzamy ile czasu wykonuje sie if
time_start = micros();
if(test_zmienna == 0){
Serial.println("ABCD");
}else{
Serial.println("BCDA" );
}
time_stop = micros();
if_execution_time = time_stop - time_start;
//sprawdzamy ile czasu wykona się switch
time_start = micros();
switch(test_zmienna){
case 0:
Serial.println("ABCD");
break;
case 1:
Serial.println("BCDA" );
break;
}
time_stop = micros();
switch_execution_time = time_stop - time_start;
//wyświetlamy wyniki
Serial.print("test 1 czas wykonania instrukcji IF: ");
Serial.print(if_execution_time);
Serial.println("uS");
Serial.print("test 2 czas wykonania instrukcji SWITCH: ");
Serial.print(switch_execution_time);
Serial.println("uS");
delay(10000);
if(test_zmienna == 0){
test_zmienna = 1;
}else{
test_zmienna = 0;
}
}Jako następne ćwiczenie sprawdźcie co się stanie jeśli w procedurze "switch" i procedurze "if", wykonamy jakąś operację która jest prosta i szybka na przykład zmiana wartości zmiennej czy coś podobnego...
Myślę że taką analizę co kompilator robi z naszymi poleceniami to mógłby wykonać ktoś kto posiada znajomośc assemblera
...przede wszystkim nie zakłócać...

