'n Oplossing wat in 'n sekonde van 'n plaaslike skyf oopmaak, neem dertig sekondes om van 'n deel te open wat deur 'n tonnel bereik word. Die tonnel is selde op sigself die oorsaak. Wat verander, is dat bewerkings wat plaaslike oproepe was, sinchroniese heen-en-weer ritte word, en die redigeerder doen verskeie daarvan voordat die venster verskyn. Die meganisme hieronder verduidelik waarom elkeen duur is en watter jy kan verwyder.

Wat die redigeerder doen terwyl 'n lêer oop is

'n Redigeerder met veranderingsnasporing hou 'n intekening op elke lêer wat dit oop het. 'n Plaaslike volume bedien daardie intekening vanuit die lêerstelsel sonder enige netwerk. Oor 'n deel kan dieselfde funksie ontaard in herhaalde metadata-lesings, want die kennisgewingmodel werk nie dieselfde oor SMB nie. Om veranderingsnasporing af te skakel is 'n billike eerste eksperiment, want dit verwyder 'n hele klas versoeke sonder om aan die tonnel te raak.

Die projekstelsel voeg sy eie verkeer by. Om 'n oplossing te laai, lys mappies, lees projeklêers en mag dalk na SDK's of pakkette soek, en elke soektog is 'n heen-en-weer rit wanneer die pad afgeleë is. 'n Oplossing met baie projekte vermenigvuldig daardie telling, en daarom groei die oopmaaktyd vinniger as wat die lêergroottes sou suggereer.

Skulpopsoekings wat verval voordat die kieslys verskyn

Windows lewer 'n tweede bron van stremmings wat niks met die IDE te doen het nie. Verkenner en sy skulpuitbreidings herontdek printers, gekoppelde skywe en kortpaaie wat voorheen gebruik is, elke keer wanneer 'n kontekskieslys oopmaak. Wanneer daardie teikens op 'n netwerk sit wat die tonnel nie kan bereik nie, blokkeer elke ontdekking totdat 'n tydsverloop verstryk, en eers dan teken die kieslys. Daarom kan 'n regsklik sekondes hang terwyl die lêer self normaal oopmaak.

Verwyder die dooie koppelings en drukwagtoue, of hou net dié wat op die netwerk bestaan waarop jy werklik is. Dieselfde redenasie geld vir enigiets wat in die agtergrond 'n pad oplos, insluitend onlangse lêerlyste en vasgepen gidse.

net use
Get-Printer | Select-Object Name, PortName
Measure-Command { Get-ChildItem \files\proj | Out-Null }

Waarom 'n plaaslike werkkopie wen

Om direk op die deel te werk, is die swakste opset vir 'n wysig-bou-toets-lus, want die redigeerder, kompileerder en weergawebeheer-kliënt lees elkeen daardie afgeleë lêers afsonderlik. Elkeen betaal sy eie heen-en-weer rit, en 'n bou betaal een keer per lêer. 'n Plaaslike kopie met stootwerk deur die bewaarplek vervang 'n vloed van klein kruisings met 'n enkele doelbewuste een. Die skakel het nie verbeter nie; die aantal kruisings het ineengestort.

Dit is 'n strukturele verandering eerder as 'n insteloefening, en dit is juis daarom dat dit werk wanneer tonnelinstellings dit nie doen nie. Dit maak ook die foutmodus duidelik: as die bou steeds stadig is met 'n plaaslike kopie, was die deel nooit die probleem nie.

Skuif geskiedenis as een objek

Wanneer die bewaarplek self deur die tonnel moet, stuur geskiedenis in 'n enkele objek eerder as om dit te deurstap. 'n Bondel is 'n enkele lêer en dus 'n enkele oordrag, terwyl 'n checkout wat duisende los objekte deurstap, duisende kruisings kos. Mercurial en Git ondersteun albei daardie vorm.

hg bundle --base 9f2c1a7e outgoing.hg
hg unbundle outgoing.hg
git bundle create repo.bundle main
git clone repo.bundle repo

Die basisweergawe is die deel wat jy reg moet kry, want dit bepaal hoeveel geskiedenis reis. Om alles te bondel werk, maar mors die skakel, terwyl bondel vanaf die laaste gemeenskaplike wysiging net dit skuif wat die ander kant kortkom.

Meet drie bewerkings voordat jy bandwydte blameer

Meet drie dinge afsonderlik: een klein lêer oopgemaak, een gids gelys, een stoor voltooi. As al drie stadig is in verhouding tot die aantal lêers, is die koste heen-en-weer ritte. As een vassteek terwyl die ander goed is, vermoed 'n tydsverloop teen 'n onbereikbare hulpbron eerder as bandwydte. Let op watter netwerk die masjien by elke lopie gebruik het, want 'n skootrekenaar wat aan 'n ander profiel herkoppel, kan die antwoord tussen pogings verander.

Herhaal dan dieselfde drie teen 'n plaaslike kopie van die projek. Die verskil is die prys van die deel, en dit is die getal om aan te haal wanneer iemand 'n vinniger skakel as die oplossing voorstel.

Verwante artikels