Citat:
vlada_vlada: Problem je sledeci: projekat zahteva da koristite slozene (npr. stablo-like) strukture podataka koje imaju veliku dinamiku izmene. Nakon odredjenog vremena elementi strukture ce biti rasuti duz velikog adresnog prostora (defragmentisani). Tada operacije nad strukturom, npr. iteriranje kroz elemente izazivaju dosta promasaja u keshu - sto zahteva dovlacenje blokova iz operativne memorije. I eto bottlenecka.
Ako projekat to zahteva, onda je to neminovno i ne zavisi od izbora programskoj jezika.
Citat:
vlada_vlada: Drugi cest problem je sto se u C++-u programer stimulise da koristi dosta objekata.
Ko te tera da koristiš više objekata nego što ti treba? U C++ se "(de)alokacija" uglavnom vrši na steku, dok ne potregneš new i delete ili strukture koje ih u sebi sadržr i kod kojih je to neizbežno. A neizbežno je iz malo fundamentalnijih razloga da bi to bilo specifično za programski jezik.
Citat:
vlada_vlada: Ove operacije pod windowsom verovali ili ne nisu thread safe. Win koristi globalni lock nad procesom da bi ih serijalizovao(!). Sto je tragicno za multithreaded aplikaciju.
Mutex (un)lock je brza operacija ako se ne zahteva provera vlasništva niti nad mjuteksom, što OS neće ni da radi ako je mjuteks u njegovom vlasništvu. Problem može da nastupi samo ako dođe do zaglavljivanja jedne niti na njemu, jer ga je druga prethodno zaključala. Ako se new i delete različitih niti u najvećem broju slučajeva promašuju, onda je to mnogo brža operacija od traženja slobodnog bloka i zauzimanja memorije.
To mora tako da se reši pod svakim OS-om. Windows nije nikakav izuzetak. Razlozi su opet fundamentralni, pa nemaju veze sa izborom programskog jezika.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.