Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  C++ vector märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
uu
HV vaatleja

liitunud: 16.08.2015




sõnum 10.12.2016 12:34:25 C++ vector vasta tsitaadiga

Kumb variant peaks olema C++ keelega kiiruse poolest parem geneetilisele algorütmile mis cache mällu mahub, kas kui double väärtust võtta ~10-20 osalisest vectorist (enamasti kasutab ainult esimest elementi ja väiksemas osakaalus hiljem teisis elemente) või kui esimene element teha eraldi double ilma vectorita ja vähemal osal kasutada vectori elemente?
Praegu kogu algorütm vectori peale üles ehitatud aga kui suur kiiruse erinevus võib tekkida kahe variandi vahel esimese elemendi kättseaamises?

vec[0-10] ( [0] esimene element üle 1000 korra rohkem kasutatud)
või
double esimene (üle 1000 korra rohkem kasutatud)
vec[0-9]
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 10.12.2016 14:54:41 vasta tsitaadiga

kas kirjutad koodis vec[0] või esimene, on tegelikult täpselt sama. Kui kompilaator selle masinkoodiks teisendab, siis on tulemus täpselt sama ehk öeldakse mine võta selliselt mäluaadressilt väärtus.
Mõnevõrra aeglasem on selline asi:
int i = 0;
teed midagi vec[i]-ga.

Kui rohkem huvitab mis karul kõhus on, siis võid omale ollydbg sikutada ja uurida mis exe failis siis täpselt tehakse. See milline masinkood tehakse oleneb ka konkreetsest kompilaatorist ja selle seadetest.
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
uu
HV vaatleja

liitunud: 16.08.2015




sõnum 11.12.2016 10:41:16 vasta tsitaadiga

Ollydbg olemas aga pole ASMiga pikemalt tutvunud kuna väga aeganõudev programme aste haaval läbi lugeda ja kohta otsida exes. Ehk kunagi jõuab.
Qt creator näitab ka ASM ja peaks leidma kindla punkti lihtsamalt.
Kui kiirus sama ei hakka esialgu asjatult programmi keerukamalt loetavaks tegema.
tagasi üles
vaata kasutaja infot saada privaatsõnum
matik
HV kasutaja

liitunud: 28.05.2008




sõnum 15.12.2016 15:25:15 vasta tsitaadiga

Kui sa optimeerid kiiruse peale ja seal on pudelikael, siis alustama peaks ikkagi profileerimisest, nt linuxi peal kasutad "valgrind --tool=callgrind" vms ja tulemus sööta kcachegrind-i.
Memory ja cache osas - abiks on ka hea lugemine, näiteks aegumatu kirjatükk siit: https://www.akkadia.org/drepper/cpumemory.pdf
tagasi üles
vaata kasutaja infot saada privaatsõnum
uu
HV vaatleja

liitunud: 16.08.2015




sõnum 15.12.2016 16:19:21 vasta tsitaadiga

matik kirjutas:
Kui sa optimeerid kiiruse peale ja seal on pudelikael, siis alustama peaks ikkagi profileerimisest, nt linuxi peal kasutad "valgrind --tool=callgrind" vms ja tulemus sööta kcachegrind-i.
Memory ja cache osas - abiks on ka hea lugemine, näiteks aegumatu kirjatükk siit: https://www.akkadia.org/drepper/cpumemory.pdf


Callgrind linuxil olen katsetanud ja cache simulatsioon ka aktiveeritud, aga peab veel uurima et paremini infot statistikast välja lugeda.
Praegu peaks algo ilusti L3 cache sisse mahtuma.
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  C++ vector
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.