To, že jakýkoli počítač pro programátora je pomalý je zcela neoddiskutovatelný fakt. Je to podobné, jako počítač pro hry, ale s tím rozdílem, že výkon počítače může ovlivnit produktivitu práce programátora. Ale to už je jiná otázka, do jiného článku.
Protože se v našem vývojářském týmu (a ve firmě obecně) rozhořela debata zda AMD či Intel, rozhodli jsme se změřit jaký počítač, resp. primárně procesor je dnes nejrychlejší právě pro potřeby programátora.
Testovali jsem na dvou našich projektech:
Jazyk | Typ | Frontend | Velikost zdrojů | Počet souborů | Počet adresářů | |
Projekt 1 | C# | Web | MVC | 214 MB | 8 983 | 1 063 |
Projekt 2 | C# | Desktop | WPF | 756 MB | 11 421 | 1 137 |
K testování jsme použili tyto tři konfigurace:
Konfigurace 1 | |
CPU: | AMD Ryzen 9 3900X 3.8 GHz 12Core 64MB L3 |
Paměť: | 32 GB - DDR4 3600MHz CL16 (G.Skill Trident Z Neo) |
Disk: | 1TB - Samsung SSD 970 EVO, M.2 |
Konfigurace 2 | |
CPU: | INTEL Core i9-9900K 3.6GHz 8core 16MB L3 |
Paměť: | 64 GB - DDR4 3200MHz CL18 (Kingston HyperX FURY Black) |
Disk: | 1TB - Samsung SSD 970 EVO, M.2 |
Konfigurace 3 | |
CPU: | INTEL Core i7-6700 3,4GHz 4Core 8MB L3 |
Paměť: | 32 GB - DDR4 2133MHz CL14 (Kingston HyperX FURY Black) |
Disk: | 512 MB - Samsung 950 PRO M.2 |
Na každé konfiguraci jsme spustili 10x překlad pomocí MSBuildu. V době testu na počítači běžel pouze Task manager pro sledování zátěže počítače.
Konfigurace 1 | Konfigurace 2 | Konfigurace 3 | ||||
Projekt 1 | Projekt 2 | Projekt 1 | Projekt 2 | Projekt 1 | Projekt 2 | |
0:00:13.90 | 0:00:59.48 | 0:00:28.12 | 0:01:18.91 | 0:00:19.40 | 0:01:57.48 | |
0:00:13.82 | 0:01:05.62 | 0:00:13.22 | 0:01:00.83 | 0:00:20.83 | 0:01:55.37 | |
0:00:14.82 | 0:01:05.19 | 0:00:11.65 | 0:01:00.65 | 0:00:19.35 | 0:01:49.52 | |
0:00:13.90 | 0:01:05.96 | 0:00:13.74 | 0:00:59.29 | 0:00:20.49 | 0:01:50.34 | |
0:00:13.93 | 0:01:02.21 | 0:00:17.54 | 0:01:01.02 | 0:00:18.84 | 0:01:50.52 | |
0:00:14.08 | 0:01:06.09 | 0:00:12.31 | 0:01:00.71 | 0:00:19.48 | 0:01:47.28 | |
0:00:13.84 | 0:01:03.59 | 0:00:11.39 | 0:00:59.96 | 0:00:19.37 | 0:01:46.36 | |
0:00:15.37 | 0:01:02.37 | 0:00:12.71 | 0:01:00.48 | 0:00:19.63 | 0:01:58.54 | |
0:00:14.38 | 0:01:04.43 | 0:00:11.70 | 0:00:58.79 | 0:00:19.33 | 0:01:59.44 | |
0:00:13.94 | 0:01:05.95 | 0:00:11.26 | 0:01:00.92 | 0:00:20.51 | 0:02:00.22 | |
Průměr | 0:00:14.20 | 0:01:04.09 | 0:00:14.36 | 0:01:02.16 | 0:00:19.62 | 0:01:53.51 |
Mimo tohoto surového měření jsme ještě zkoušeli co ovlivňuje dobu překladu a zde je několik našich postřehů:
- běh Spotify na pozadí během překladů u CPU I9 a Ryzen nemá na dobu překladu prakticky vliv
- prohlížení Youtube, nebo https://9gag.com/ nemá na dobu překladu prakticky vliv
- manualní nastavenní nejvyšší priority MSBuildu a VBCSCompileru nemá na rychlost buildu žádný vliv, ale zpusobí zpomalení ostatních procesu, což má za výsledek například zasekávání přehrávání hudby, apod.
- update steamu, případně instalace jiného programu během překladu prodlužuje dobu překladu o cca 20%
- u i9 bylo pozorováno, že MSBuild nedokáže využít 100% výkonu stroje. Během překladu se přetaktuje procesor na 4.68 GHz a je využíváno všech 16 logických jádrech s průměrnou zátěží 36%. Disk je zatížen na 74%, velikost paměti 64GB se nevyužije vůbec, je využito 17.7 GB, tedy cca 28%
- u Ryzenu bylo pozoráno, že nejpomalejší je SSD, který CPU brzdí. Během překladu se přetaktuje procesor na 4,2 GHz a je využíváno všech 24 logických jádrech s průměrnou zátěží 12%. Disk je zatížen na 100%. Velikost paměti 32GB se nevyužije vůbec, je využito 13,3 GB, tedy cca 42%
- ani u i7 se procesor nevytěžuje na 100%. Během překladu se přetaktuje procesor na 3.71 GHz a je využíváno na všech 8 logických jádrech s průměrnou zátěží 21%. Disk je zatížen na 29%. Velikost paměti 32GB se nevyužije vůbec, je využito 15.2 GB, tedy cca 48%
Build projektu na notebooku
Protože mnoho programátorů pracuje i na noteboocích, někteří i trvale, zkusili jsme ještě otestovat rychlost na nich. Testovali jsme "Projekt 2" na NB s konfigurací Intel Core i7-8650U, 1.9GHz, 16 GB RAM, NVME SSD s Windows 11 a Intel Core i7-8850H, 2.6 GHz, 32GB RAM a opět NVME SSD. Chování při buildu ohledně využití paměti a zátěže jednotlivých jader je shodné (logicky) jako na stolním počítači. Rychlost buildu "Projekt 2" byla na i7-8850H v průměru 0:1:21.40, a na i7-8650U 0:1:26.50.Tyto časy jsou měřené, pokud je notebook na síti a kdy dochází k přetaktování CPU na více jak 4 GHz. Je-li notebook na baterce, je doba buildu o cca 65% delší (v průměru 0:2:26.40).
Závěr
Z našeho pohledu je i9 a Ryzen 9 3900x srovnatelný. U i9 i Ryzenu, kde se nedokáže využít procesor na 100%, může programátor během buildu řešit i další věci (googlit, číst tikety, komunitovat apod.) aniž by prodloužil dobu překladu.
Intel i7, díky tomu, že se jedná o procesor o 3 generace starší, výkonnostně značně zaostává, ačkoli ani tuto konfiguraci MSBuild nedokáže využít na 100%.
Pro vývojáře v C++ jsme ještě změřili referenční čas buildu projektu, který má zdoje o velikosti 320 MB, 2 907 souborů v 57 adresářích. Čas buildu tohoto projektu, na konfiguraci 2 (Intel i9), je 0:23:14.90.