166

166



Jedna z klasycznych zasad programowania mówi, że używanie obliczeń za pomocą wskaźników jest szybsze, niż używanie indeksowania tablic i dlatego warto pisać trudne do odczytania kody używające wskaźników. Przy dzisiejszych kompilatorach to jednak nie jest do końca prawdą. Pisanie kodu z użyciem tablic da, w większości wypadków, tę samą wydajność, co pisanie kodu wykorzystującego wskaźniki. Oczywiście kod używający wskaźników będzie wyglądał bardziej fachowo.

Spójrzmy na kod maszynowy wygenerowany przez kompilator dla części właściwej pętli we fragmencie „Przed”:

11:

rgch[ich++] = '

0040103F

mov

eax,dword ptr [ich]

00401045

mov

byte ptr rgch[eax],20h

0040104D

mov

ecx,dword ptr [ich]

00401053

add

ecx,1

00401056

mov

dword ptr [ich],ecx

A oto kod wygenerowany dla pętli we fragmencie

17:

*pch++ = 't';

00401099

mov

eax,dword ptr [pch]

0040109C

mov

byte ptr [eax],74h

0040109F

mov

ecx,dword ptr [pch]

004010A2

add

ecx,1

004010A5

mov

dword ptr [pch],ecx

Cóż, niewielka różnica.

W tym wypadku lepiej byłoby użyć bardziej czytelnego kodu używającego tablic. Mówiąc krótko, klasyczne zasady nie zawsze się sprawdzają. W razie wątpliwości lepiej sprawdzić, co jest rzeczywiście generowane.

Przykład: TestBuffO w pliku misc.cpp

Przydzielanie pamięci jest kosztowne

pisanie szybkiego kodu

Przed

if(m_pstrumień)

delete m_pstrumień;

m_pstrumień = (PSTRUMIEŃ)new STRUMPLIK(TRUE);

Po

if(m_pstrumień)

{


Wyszukiwarka

Podobne podstrony:
klasa 2 (5) Listopad a ■ b = □ 1. Oblicz za pomocą    ile jest ge
SKANOWANIE Z PROGRAMU ZGODNEGO ZE STANDARDEM TWAIN Sterownik skanera SHARP jest zgodny ze standardem
Językiem programowania nazywamy zestaw zasad tekstowego lub graficznego opisu algorytmu za pomocą pr
SKANOWANIE Z PROGRAMU ZGODNEGO ZE STANDARDEM TWAIN Sterownik skanera SHARP jest zgodny ze standardem
074 075 2 74 Programowanie liniowe Kryterium wejścia Obliczamy ilorazy wartości wskaźników optymciln
281 2 281 7.3. Interpolacja (-) Obliczyć /(O) za pomocą ekstrapolacji iterowancj Richardsona, zakład
a1 Silniaa program cw3_47; { Program oblicza N! za pomocą funkcji Siln { Katalog r3_10 : 3_47.pas va
43 (392) program cw3_49; { Program oblicza N! za pomocą funkcji Silnia. } { Katalog r3_10 : 3_49.pas
63419 oblicz NWD program cw3_48; { Program znajduje największy wspólny dzielnik A i B { za pomocą fu
226 (18) Mo?na porównać wyniki obliczeń za pomocą współczynników rozrzutu, korzystając ze wzoru (12.
plyta 6. MOMENT SKRĘCAJĄCY Moment skręcający względem kierunków x,y obliczamy za pomocą wzoru na po
s 75 75 Siłę elektromotoryczną (SEM) ogniwa można obliczyć za pomocą następującej zależności: SEM =
strona 7 i 8 wartość przyszłą przy kapitalizacji złożonej z dołu można obliczyć za pomocą wzoru: K„
krzywoliniowej obliczamy za pomocą tablic do tyczenia krzywych kołowych Ts = (R+H) tg 4" = 300,
PROGRAM ROZWOJOWY I111 POLITECHNIKI WARSZAWSKIEJ za pomocą „Electrical Safety Tester RIGEL

więcej podobnych podstron