NetAcademia

A legjobbakat tanítjuk!

Számok, amit programozóként tudnod kell.

2016. május 10. 08:00 - Plesz Gábor

Latency Numbers Every Programmer Should Know

Latency Numbers Every Programmer Should Know

Numbers Everyone Should Know

Designs, Lessons and Advice from Building Large Distributed Systems

 

 

5 komment
Címkék: development

A bejegyzés trackback címe:

https://netacademia.blog.hu/api/trackback/id/tr388700742

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Hóhér az utolsó barátod · http://internetszemete.blog.hu 2016.05.10. 09:11:23

Kettőt néztem meg. Nem értem. Egy átlagos programozót, aki php, c#, java stb. nyelven dolgozik, hol kell érdekelje az L1 cache latency? Meg úgy egyáltalán... ezek nem kőbe vésett értékek, mint pl. a fénysebesség, hanem hardver függő adatok - már amennyire tudom. Ez még inkább vonatkozik az I/O műveletek értékeire, különösen a manapság szokásos, agyonvirtualizált rendszereken.
Mit hagytam ki, miről maradtam le?

Tron65 2016.05.10. 10:06:16

Igazad van. Előbb-utóbb gyártani fognak olyan hardvert, amin a Te programod is elviselhető sebességgel működik majd.

Hóhér az utolsó barátod · http://internetszemete.blog.hu 2016.05.10. 10:48:06

@Tron65: mégegyszer, hogy az ilyen lassú felfogásúak is értsék: ezek a számok nem általános érvényűek és virtualizált környezetben feldughatod magadnak ezeket az információkat, mert a vm miatt sok dolog másképp működik. Ez különösen igaz az olyan nyelvekre, amik bájtkódra fordulnak.
Ennek az egésznek kb. C/C++ és assembly esetén van jelentősége.
Anno, mikor programozni tanultam, még annak is volt jelentősége, hogy milyen fordulatszámon pörög a diszk. Ma azt sem tudhatod, hogy egy adatblokk bájtjai egy földrészre kerülnek-e. Tíz+ éve már olyan rendszeren dolgoztam, amin az op.rendszer által látott diszk a vezérlőben csak egy virtuális eszköz volt, ami ki tudja hány fizikai diszkből állt. Húsz+ éve is olyan controllerek voltak a gépeinken, amiknek volt writeback cache funkciója, ami rengeteget gyorsított az íráson.
Ugyanez van a virtuális gépekkel: programozóként már rég nem számíthatsz rá, hogy a proci, memória stb. pont olyan időzítéssel, sebességgel működik, ahogy várod, hacsak nem közvetlenül adott hardverre írsz natív gépikódra fordított programot. Ez mostanában egyre ritkább. Kernel fejlesztők és talán a beágyazott rendszerek programozói találkoznak ilyesmivel, más nem nagyon. Talán még játékoknál lehet fontos, de ott is kétlem, hogy ilyen mértékben optimalizálnák a kódokat.
2000-ben kezdtem Magic-ben dolgozni. Azt sem tudhattuk, milyen architektúra lesz alatta. A programjaink futottak mindenen, amire létezett magic runtime...

Tron65 2016.05.16. 16:27:45

@Hóhér az utolsó barátod: Kedves Hóhér!
30 éve hardveresként dolgozva azokat útálom a legjobban, akik ilyen félredumával akarják elkerülni azt, hogy NORMÁLIS programot írjanak.
A TI kedvetekért fejlesztették ki az i9-es processzorokat 96 maggal és 462 giga rammal. Ezen talán ha megnyomom az entert, akár az is előfordulhat, 1 percen belül történik valami? És kéretik nem a gigás hálózat lassúságára kenni!