Lahendus, mis avaneb kohalikult kettalt sekundiga, avaneb tunneliga jõutavalt jagatud kettalt kolmekümne sekundiga. Tunnel ise on harva põhjus. Muutub see, et operatsioonid, mis olid kohalikud kutsed, muutuvad sünkroonseteks edasi-tagasi käikudeks, ja redaktor teeb neist mitu enne, kui aken ilmub. Alljärgnev mehhanism selgitab, miks igaüks neist on kallis ja milliseid saate eemaldada.

Mida redaktor teeb, kui fail on avatud

Muudatuste jälgimisega redaktor hoiab tellimust igal avatud failil. Kohalik köide teenindab seda tellimust failisüsteemist ilma võrguosaluseta. Üle jagatud ketta võib sama funktsioon manduda korduvateks metaandmete lugemisteks, sest teavituste mudel ei käitu SMB kaudu ühtemoodi. Muudatuste jälgimise väljalülitamine on aus esimene katse, kuna see eemaldab terve päringute klassi tunnelit puutumata.

Projektisüsteem lisab oma liikluse. Lahenduse laadimine loetleb katalooge, loeb projektifaile ja võib kontrollida SDK-sid või pakette, ja iga kontroll on edasi-tagasi käik, kui tee on kaugel. Paljude projektidega lahendus korrutab selle arvu, mistõttu avanemisaeg kasvab kiiremini, kui failisuurused vihjavad.

Kestaotsingud, mis aeguvad enne menüü ilmumist

Windows lisab teise tõrgete allika, millel pole IDE-ga midagi pistmist. Explorer ja selle kestalaiendused lahendavad uuesti printereid, kaardistatud kettaid ja varem kasutatud otseteid iga kord, kui kontekstimenüü avaneb. Kui need sihtmärgid asuvad võrgus, kuhu tunnel ei ulatu, blokeerub iga lahendus, kuni ajalõpp aegub, ja alles siis joonistatakse menüü. Seetõttu võib paremklõps sekundeid rippuda, samal ajal kui fail ise avaneb tavaliselt.

Eemaldage surnud kaardistused ja printerijärjekordad või jätke alles ainult need, mis on võrgus, kus te tegelikult olete. Sama loogika kehtib kõige kohta, mis lahendab teed taustal, sealhulgas hiljutiste failide loendid ja kinnitatud kaustad.

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

Miks kohalik töökoopia võidab

Otse jagatud kettal töötamine on redigeerimis-ehitamis-testimistsükli jaoks halvim seadistus, sest redaktor, kompilaator ja versioonihalduse klient loevad kõik neid kaugfaile eraldi. Igaüks neist maksab oma edasi-tagasi käigu eest ja ehitus maksab korra faili kohta. Kohalik koopia koos tõukamisega hoidla kaudu asendab tulva väikestest ületustest ühe tahtlikuga. Link ei ole paranenud; ületuste arv on kokku varisenud.

See on struktuurne muudatus, mitte häälestusharjutus, ja just seetõttu töötab see siis, kui tunneli seaded ei tööta. See teeb ka rikkerežiimi ilmseks: kui ehitus on kohaliku koopiaga endiselt aeglane, ei olnud jagatud ketas kunagi probleem.

Liigutage ajalugu ühe objektina

Kui hoidla ise peab tunnelist läbi minema, saatke ajalugu ühes objektis, selle asemel et seda läbi käia. Pakk on üks fail ja seega üks ülekanne, samas kui tuhandeid lahtisi objekte läbi käiv checkout maksab tuhandeid ületusi. Mercurial ja Git toetavad mõlemad seda vormi.

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

Baasredaktsioon on see osa, mis tuleb õigesti tabada, sest see otsustab, kui palju ajalugu reisib. Kõige pakkimine töötab ja raiskab linki, samas kui viimasest ühisest muudatusest pakkimine liigutab ainult seda, mida teisel poolel puudu on.

Mõõtke kolme toimingut enne, kui süüdistate ribalaiust

Mõõtke kolme asja eraldi: üks väike fail avatud, üks kataloog loetletud, üks salvestus lõpetatud. Kui kõik kolm on aeglased võrdeliselt failide arvuga, on kulu edasi-tagasi käigud. Kui üks takerdub, samal ajal kui teised on korras, kahtlustage ajalõppu kättesaamatu ressursi vastu, mitte ribalaiust. Märkige, millises võrgus masin igal käivitusel oli, sest sülearvuti, mis ühendub uuesti teise profiiliga, võib katsete vahel vastust muuta.

Seejärel korrake samu kolme projekti kohaliku koopia vastu. Erinevus on jagatud ketta hind ja see on number, mida tsiteerida, kui keegi pakub lahendusena kiiremat linki.

Seotud artiklid