Rješenje koje se s lokalnog diska otvara u sekundi potrebno je trideset sekundi da se otvori s dijeljenja do kojeg se dolazi tunelom. Tunel je rijetko sam po sebi uzrok. Ono što se mijenja jest da operacije koje su bile lokalni pozivi postaju sinkrona kružna putovanja, a uređivač ih izvede nekoliko prije nego se prozor pojavi. Mehanizam u nastavku objašnjava zašto je svako skupo i koja možete ukloniti.

Što uređivač radi dok je datoteka otvorena

Uređivač s praćenjem promjena drži pretplatu na svakoj otvorenoj datoteci. Lokalni volumen poslužuje tu pretplatu iz datotečnog sustava bez mreže. Preko dijeljenja ista se značajka može degradirati u ponavljana čitanja metapodataka, jer se model obavijesti ne ponaša jednako preko SMB-a. Isključivanje praćenja promjena pošten je prvi pokus, jer uklanja cijelu klasu zahtjeva bez diranja tunela.

Projektni sustav dodaje vlastiti promet. Učitavanje rješenja nabraja direktorije, čita projektne datoteke i može ispitivati SDK ili pakete, a svako je ispitivanje kružno putovanje kad je putanja udaljena. Rješenje s mnogo projekata umnožava taj broj, zato vrijeme otvaranja raste brže nego što bi veličine datoteka sugerirale.

Pretrage ljuske koje isteknu prije nego se pojavi izbornik

Windows dodaje drugi izvor zastoja koji nema veze s IDE-om. Explorer i njegova proširenja ljuske iznova razrješavaju pisače, mapirane pogone i prečace korištene prije svaki put kad se otvori kontekstni izbornik. Kad se ti ciljevi nalaze na mreži do koje tunel ne može doći, svako razrješavanje blokira dok ne istekne vremensko ograničenje, i tek se tada izbornik iscrtava. Zato desni klik može visjeti sekundama dok se sama datoteka otvara normalno.

Uklonite mrtva mapiranja i redove za ispis ili zadržite samo ona koja postoje na mreži na kojoj se doista nalazite. Isto razmišljanje pokriva sve što u pozadini razrješava putanju, uključujući popise nedavnih datoteka i prikvačene mape.

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

Zašto pobjeđuje lokalna radna kopija

Rad izravno na dijeljenju najgore je postavljanje za petlju uređivanja, izgradnje i testiranja, jer uređivač, prevoditelj i klijent za kontrolu verzija čitaju te udaljene datoteke svaki zasebno. Svaki od njih plaća svoje kružno putovanje, a izgradnja plaća jednom po datoteci. Lokalna kopija s guranjem kroz repozitorij zamjenjuje poplavu sitnih prijelaza jednim namjernim. Veza se nije poboljšala; broj prijelaza se urušio.

To je strukturna promjena, a ne vježba podešavanja, i upravo zato djeluje kad postavke tunela ne djeluju. Također čini način kvara očitim: ako je izgradnja s lokalnom kopijom još spora, dijeljenje nikad nije bilo problem.

Premjestite povijest kao jedan objekt

Kad sam repozitorij mora prijeći tunel, pošaljite povijest u jednom objektu umjesto da je obilazite. Paket je jedna datoteka i stoga jedan prijenos, dok checkout koji obilazi tisuće slobodnih objekata stoji tisuće prijelaza. Mercurial i Git oba podržavaju taj oblik.

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

Osnovna revizija dio je koji treba pogoditi, jer odlučuje koliko povijesti putuje. Pakiranje svega djeluje i rasipa vezu, dok pakiranje od posljednje zajedničke promjene prenosi samo ono što drugoj strani nedostaje.

Izmjerite tri operacije prije nego okrivite propusnost

Izmjerite tri stvari odvojeno: jedna mala datoteka otvorena, jedan direktorij nabrojan, jedno spremanje dovršeno. Ako su sve tri spore razmjerno broju datoteka, trošak su kružna putovanja. Ako jedna zapne dok su ostale u redu, posumnjajte u vremensko ograničenje prema nedostupnom resursu, a ne u propusnost. Zabilježite na kojoj je mreži stroj bio pri svakom pokretanju, jer prijenosnik koji se ponovno poveže s drugim profilom može promijeniti odgovor između pokušaja.

Zatim ponovite iste tri prema lokalnoj kopiji projekta. Razlika je cijena dijeljenja, i to je broj koji treba citirati kad netko predloži bržu vezu kao rješenje.

Povezani članci