Kezdőoldal » Számítástechnika » Programozás » Milyen pc konfigurációt...

Milyen pc konfigurációt javasoltok ha arra akarom összerakni, hogy minél gyorsabban fordítson forráskódot?

Figyelt kérdés

Nagyon sok időt elvesz, hogy több millió soros programokat kell újrafordítani sokszor egy nap. Milyen pc konfiggal lehetne ezt kivédeni? Gondolom az SSD alap tartozék. Ezen kívül?


(Visual Studio 13, C++, C#)


2014. dec. 4. 13:58
 1/8 anonim ***** válasza:

Na ami lehet?


> Processzor órajel?

igaz befolyásolja, de nincs tényleges lineáris kapcsolat a fordítási idő és az órajel között. Amúgy a mai piacon a CPU-k 90%-a 2.8-3.2 GHz között mozog ez a fizikai plafon. Esetleg a cache méret az mi inkább meghatározza, de ott sincs sok különbség.

Mondjuk az Intel fordítója egész jól kihasználja a saját processzorait.


> És a magok száma?

A fordítást nagyon kevés fordító párhuzamosítja. Egyedül a precompiler az amit lehet inkonzisztensen futtatni fájlokra. A fordítás kb 10% ha párhuzamosítható.


> Az SSD az alap tartozék, nem?

Az SSD alap, hiszen minden fordítás előtt ment az IDE, hiszen a fordító egy külön programként fut. Valójában azonban nem az IO a szűk keresztmetszet. A kimeneten létrejövő össze nem linkelt tárgykódok igénylenek némi IO kapacitást, de szinten elenyésző.


> Akkor mi?

Memória, memória és memória!

Egy jó fejlesztői gépben még 10 éve és volt 4 GB memória, ami akkor kuriózum volt. Manapság egy build szerver 16 GB dolgozik. Nagyobb fejlesztői gárdánál ez annyira centralizált, hogy a fejlesztői gépek olcsó munkaállomások, ahol unitteszteket írsz és csak komponenseket debuggolsz. A build szerver pedig minden nap végén lefordítja a teljes kódbázist és mindnen unittesztet elvégez.

2014. dec. 4. 14:21
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:

Azért az én munkaállomásomban nagyon jó helyen van az 8GB memória. Tegyük hozzá, nem elég a memória mérete, a sebessége sem elhanyagolható tényező, de nagyon nem: Nem mindegy, hogy egy 3GHz körüli órajellel dolgozó processzornak egy 800MHz-en, vagy 1333MHz-en kereplő memóriára kell várnia.


A build szervereket azért ne keverjük ide, mert egészen más performanciával jár valami build toollal, continuous integration szoftverrel forgatni a kódot, mint Visual Studio alatt megnyomni a Ctrl+F5-öt, arról nem is beszélve, hogy a két dolog kontextusa is teljesen más. Nem igazán lehet összehasonlítani. Ha egy build szervernek 10 percébe kerül átrágnia magát a kódon és a unit teszteken, aztán jelenteni az esetleges problémákat, az egy teljesen elfogadható eredmény, míg ha az IDE-ben csapok rá a "Compile and run" -ra (ami amúgy lassabb), akkor nem szeretnék 10 percet malmozni, mire beforog - arról nem is beszélve, hogy ha így van, lőttek a TDD-nek.


Mellesleg azért az az IO sem olyan elhanyagolható kérdéskör. Amikor a fizikai memória elfogy, akkor az OS előveszi a lapozófájlt (oké, nem akkor, de ebbe most ne menjünk bele). A lapozófájlt pedig a lemezen találja, amire baromi sokat kell várni, még akkor is, ha SSD, ha meg nem az, akkor baj van. Ilyenkor jönne nagyon jól, ha szépen párhuzamosítva lenne a fordítás, mert amíg az egyik szál a lemezen nézelődik (DMA of course), valaki más rágcsálhatja az épp rábízott adatokat. Ez azonban a compilerekre nem igazán jellemző.


Ha ökölszabályt szeretne a kedves kérdező, akkor csak megerősíteni tudom az első válaszolót: Minél több, és minél gyorsabb memória, hozzá pedig 64 bites oprendszer (of course).

2014. dec. 4. 16:02
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
Előttem már mindent elmondtak, de nekem az a fura, hogy több millió soros programokat fordítasz, és nem tudod, hogy működik egy fordító??? Ha meg tudod, nem tudod összerakni fejben gond nélkül azt, amit feljebb leírtak?
2014. dec. 4. 16:18
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
Kiegészítésként, csak hogy elkerüljük a félreértéseket: SSD meghajtóra (vagy bármilyen flash-re) tilos lapozófájlt engedélyezni, mert megeszi a rewrite ciklusokat, aztán adatostul mehet a vinyó a kukába...
2014. dec. 4. 16:38
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
Utolsónak +1
2014. dec. 4. 16:50
Hasznos számodra ez a válasz?
 6/8 iostream ***** válasza:
Szóval nem tudják párhuzamosítani a fordítást? Megvesztél, kedves válaszoló? Pont a C++ fordítás az, ami a világ legkönnyebben párhuzamosítható dolga, ugyanis minden fordítási egység teljesen külön fordul.
2014. dec. 4. 18:47
Hasznos számodra ez a válasz?
 7/8 SimkoL ***** válasza:
' több millió soros programokat' :)
2014. dec. 4. 19:03
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:

Köszi azoknak, akik értelmesen válaszoltak.


Amúgy egy ideje RAM-Disk-et használok, de talán ha 20%-ot gyorsult a fordítás tőle, akkor sokat mondtam. Most ha a teljes programot fordítom, az 5-6 perc. Sajnos gyakran kell belenyúlni központi project-ekbe, amik miatt majdnem az egész program újrafordul.

2014. dec. 4. 23:39

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!