Xynxyn Temat założony przez niniejszego użytkownika |
[C/C++] Szybkość wykonywania operacji » 2013-07-11 15:53:01 Ja i me kolejne pytania... ;D Tak pytam z ciekawości, co jest szybsze, sprawdzenie warunku np.: if( a = 3 ) {...} czy przypisanie wartości do liczby, np.: a = 4; Wiadomo, różnice są rzędu nanosekund czy milisekund, ale chcę wiedzieć... ;) PS. i czy w C i C++ jest to jakaś różnica. (zakładam, że nie bo po procesie kompilacji kod asemblera wygląda tak samo za pewne - te same czynności, to samo) :) Z góry dziękuję za odpowiedzi. ;) |
|
m4tx |
» 2013-07-11 15:54:36 Tak pytam z ciekawości, co jest szybsze, sprawdzenie warunku np.:
if( a = 3 ) {...} |
To nie jest sprawdzenie warunku :) |
|
Xynxyn Temat założony przez niniejszego użytkownika |
» 2013-07-11 15:58:25 Literówka, powinno być if (a == 3) ;D
EDIT: Poza tym TO JEST sprawdzenie warunku. Po prostu zawsze będzie słuszny. Ale warunek to wciąż jest. Tak jakbym napisał if (10) dosmth(); ( i przy okazji przypisanie wartości do liczby, ale to już inna sprawa) Skoro już tak się przyczepiłeś literówki. ;P |
|
m4tx |
» 2013-07-11 16:05:13 Poza tym TO JEST sprawdzenie warunku. Po prostu zawsze będzie słuszny. Ale warunek to wciąż jest. Tak jakbym napisał if (10) dosmth(); Skoro już tak się przyczepiłeś literówki. ;P |
Ależ ja o tym doskonale wiem - rzecz w tym, że byłem pewien, że chodziło Ci o == , a nie = . Tym bardziej że na logikę coś1 + coś2 na pewno będzie wolniejsze niż coś1 (gdzie coś1 to oczywiście a = 3 , a coś2 to if( cos1 ) ). |
|
Xynxyn Temat założony przez niniejszego użytkownika |
» 2013-07-11 16:07:32 Ależ chodziło mi o if (a == 3) i a = 4. ;D |
|
Thud |
» 2013-07-11 16:08:50 Najchętniej dowiedziałbym się, co na ten temat powiedziałby asembler. |
|
Xynxyn Temat założony przez niniejszego użytkownika |
» 2013-07-11 16:18:22 Ja też, ale... nie wiem gdzie jest/są plik(i) z kodem asemblera po kompilacji. (używam Code::Blocks z GNU GCC) |
|
Thud |
» 2013-07-11 16:23:32 Ciekawostka mikroprocesorowa (AVR): Instrukcja bezpośredniego przypisania (LDI) stałej do rejestru zajmuje 1 cykl procesora. Instrukcja relatywnego skoku do danej części kodu (RJMP) to 2 cykle zegarowe procesora. Instrukcja przeskoczenia, jeżeli któryś warunek nie jest spełniony/jest spełniony: Skip if Bit in Register Cleared (SBRC) Skip if Bit in Register is Set (SBRS) Skip if Bit in I/O Register Cleared (SBIC) Skip if Bit in I/O Register is Set (SBIS) |
Trwa (w zależności od wyniku): 1, 2 lub 3 cykle zegarowe. Instrukcja porównania i wpisania wartości wyniku do specjalnego rejestru (nazwanego SREG - Status Register) trwa 1 cykl zegarowy. Dodatkowe instrukcje, które mogą zostać wykonane po tej operacji (porówniania) w zależności od wyniku trwają 1 lub 2 cykle zegarowe. To był przykład dla Attiny2313. Inne AVR'y mają podobnie. Źródło: http://www.atmel.com/images/doc2543.pdfStrony 213 i 214. |
|
« 1 » 2 3 |