On Monday 19 July 2004 17:14, Vali Dragnuta wrote:
> On Mon, 2004-07-19 at 17:01, Serghei Amelian wrote:
> > On Monday 19 July 2004 16:50, Dorin Lazar wrote:
> > > On Monday 19 July 2004 16:39, Serghei Amelian wrote:
> > > > PS De asta nu-mi place sa programez in C, trebuie sa fii tot
> > > > timpul atent la prostiilea astea. O clasa C++ pentru string-uri
> > > > (chiar si STL) e o minune la casa omului.
> > >
> > >   Doar ca iti mananca procesor, mai ales daca lucrezi cu
> > > string-urile intr-un loc sensibil. Depinde intr-adevar ce faci -
> > > si acolo, asa cum spui si tu, ar fi mers un string STL, sau ceva
> > > de genul asta.
> >
> > Supraincarcarea procesorului e minima, ca pana la urma tot de
> > alocare de memorie e vorba. Ori ca aloci un string static (care de
> > fapt e alocat in stiva), ori folosesti new ori malloc, ori
> > instantiezi o clasa de pentru prelucrarea stringurilor, tot aia e.
> > Poate mici diferente din cauza ca se mai apeleaza o functie, doua.
> > Dar pentru masinile din ziua de azi e o nimica toata.
>
> --- asta e  o mare timpenie.
> Ia incearca tu sa faci o bucla de 10k iteratii in care aloci/dealoci

10000 de iteratii? asta e test pentru HC-ul meu prafuit din pod. Poate 
nu ai observat ca pe masinile din ziua de azi se pot rula filme. Asta 
inseamna milioane si milioane de iteratii pe secunda. Ai observat poate 
cat de repede se scaleaza (chiar si cu smooth) o imagine truecolor de 
1024x768 pixeli. Ai calculat cate iteratii trebuie sa faci sa scalezi 
asa ceva? Fii rezonabil..
Aici vorbim de STRING-uri, din cauza carora sunt cele mai multe probleme 
de securitate.


> chestii si vezi cit ia in fiecare caz. Desigur ceea ce zic eu este un
> pic dus la extrem, insa ideea de baza este ca nu este exact ACELASI
> lucru, si in functie de specificul aplicatiei este posibil sa aiba un
> impact major asupra performantei. Iar atitudunea asta cu "nu mai
> conteaza pe masinile de azi" este tipica programatorilor de 2 lei
> care asteapta ca hardwareul sa faca totul pentru ei, in vreme ce

OK, de maine o sa ma apuc sa programez in assembler sa economisesc 
fiecare tact de procesor. De fapt, am si incercat sa fac asta (la o 
chestie mai speciala) dar am fost asa de dezamagit de rezultat.. Am 
obtinut o crestere de viteza de vreo 10ms la versiunea in assembler 
fata de cea scrisa in C++.

> codul produs de ei este o mizerie. Da' ce conteaza, atita vreme cit
> ne respectam termenul de predare al proiectului, nu conteaza ca
> inauntru codul nostru este o mizerie. Eventual ii spunem
> beneficiarului ca o sa trebuiasca sa mai cumpere un procesor mai bun,
> sau sa isi mai ia si niste ram, ca este prea greu pentru noi sa
> scriem cod cu altceva decit cu c*rul, cod care este si lent, si colac
> peste pupaza mai este pe alocuri si exploatabil.

Un cod secure este intotdeauna mai lent decat unul insecure. Cred ca 
ti-ai dat seama, e din cauza mai multor teste de verificare a 
validitatii datelor.

Si pentru informarea ta: un bloc de memorie alocat nu este alocat cu 
adevarat decat in momentul in care e folosit. Asa ca pot sa aloc si sa 
dealoc 1G de memorie de 100k pe secunda. Si alta chestie: cele mai mari 
pierderi de viteza sunt din cauza conditiilor (if, while, for, etc) din 
cauza ca mecanismele de executie speculativa a procesoarelor sunt 
pacalite sa incarce in cache cod care de fapt nu va fi executat. Si 
ultima chestie: scrierile si citire din/in memorie a blocurilor foarte 
mari e groaznic de lenta.

Concluzie: nu mai da vina pe chestii nevinovate.

-- 
Serghei.

--- 
Detalii despre listele noastre de mail: http://www.lug.ro/


Raspunde prin e-mail lui