Witam Kolegów
Nurtuje mnie pewien problem.
Mam w programie zmienna uint16 przechowującą czas w sekundach. Maksymalna wartość to 5400 sek. co odpowiada 90 minutom.
No i teraz treść problemu: w pewnych miejscach potrzebuję przeliczyć wartość mojej zmiennej "CzasWsekundach" na czas w postaci minuty:sekundy. W innej części programu potrzebuję robić przeliczenie odwrotne. Do tej pory stosowałem następujący zapis:
i analogicznie w drugą stronę:
Czy dla podanej wartości maksymalnej zmiennej "CzasWsekundach" warto jest przerabiać te procedury na coś mniej więcej takiego:
oraz przeliczanie odwrotne:
Oczywiście pomijam tutaj całkowicie sposób deklaracji funkcji, przekazywania argumentów i wyników, ponieważ nie to jest sednem sprawy. Dla jasności podam tylko, że użyte w pętlach zmienne to następująca struktura:
Na pierwszy rzut oka mój przerobiony zapis jest dłuższy od pierwowzoru, jednak zawsze wydawało mi się, że operacje dodawania i odejmowania są dużo wydajniejsze (szybsze) niż operacje mnożenia i dzielenia. Co oczywiście nie znaczy, że mam w tej kwestii bezsprzeczną rację. Prosiłbym Kolegów o konstruktywną dyskusję.
Nurtuje mnie pewien problem.
Mam w programie zmienna uint16 przechowującą czas w sekundach. Maksymalna wartość to 5400 sek. co odpowiada 90 minutom.
No i teraz treść problemu: w pewnych miejscach potrzebuję przeliczyć wartość mojej zmiennej "CzasWsekundach" na czas w postaci minuty:sekundy. W innej części programu potrzebuję robić przeliczenie odwrotne. Do tej pory stosowałem następujący zapis:
minuty=CzasWsekundach/60;
sekundy=CzasWsekundach%60;i analogicznie w drugą stronę:
CzasWsekundach=(minuty*60)+sekundyCzy dla podanej wartości maksymalnej zmiennej "CzasWsekundach" warto jest przerabiać te procedury na coś mniej więcej takiego:
T.CzasMin=0;
T.CzasSek=0;
while(T.CzasWsekundach>60)
{
T.CzasWsekundach-=60;
T.CzasMin+=1;
}
T.CzasSek=T.CzasWsekundach; oraz przeliczanie odwrotne:
T.CzasWsekundach=0;
while(T.CzasMin>0)
{
T.CzasMin--;
T.CzasWsekundach+=60;
}
T.CzasWsekundach+=T.CzasSek; Oczywiście pomijam tutaj całkowicie sposób deklaracji funkcji, przekazywania argumentów i wyników, ponieważ nie to jest sednem sprawy. Dla jasności podam tylko, że użyte w pętlach zmienne to następująca struktura:
struct Tajmes{
uint16_t CzasWsekundach;
uint8_t CzasSek;
uint8_t CzasMin;
}T;Na pierwszy rzut oka mój przerobiony zapis jest dłuższy od pierwowzoru, jednak zawsze wydawało mi się, że operacje dodawania i odejmowania są dużo wydajniejsze (szybsze) niż operacje mnożenia i dzielenia. Co oczywiście nie znaczy, że mam w tej kwestii bezsprzeczną rację. Prosiłbym Kolegów o konstruktywną dyskusję.
