Risinājums, kas no vietējā diska atveras sekundē, no koplietotās mapes, kas sasniedzama caur tuneli, atveras trīsdesmit sekundēs. Tunelis pats par sevi reti ir cēlonis. Mainās tas, ka darbības, kas bija vietēji izsaukumi, kļūst par sinhroniem ceļiem turp un atpakaļ, un redaktors veic vairākas no tām, pirms parādās logs. Tālāk aprakstītais mehānisms skaidro, kāpēc katra ir dārga un kuras varat noņemt.

Ko redaktors dara, kamēr fails ir atvērts

Redaktors ar izmaiņu izsekošanu uztur abonementu katram atvērtajam failam. Vietējais sējums apkalpo šo abonementu no failu sistēmas bez tīkla. Caur koplietoto mapi tā pati funkcija var degradēties atkārtotās metadatu nolasīšanās, jo paziņojumu modelis pār SMB neuzvedas tāpat. Izmaiņu izsekošanas izslēgšana ir godīgs pirmais eksperiments, jo tas noņem veselu pieprasījumu klasi, neaiztiekot tuneli.

Projektu sistēma pievieno savu trafiku. Risinājuma ielāde uzskaita mapes, nolasa projekta failus un var pārbaudīt SDK vai pakotnes, un katra pārbaude ir ceļš turp un atpakaļ, kad ceļš ir attāls. Risinājums ar daudziem projektiem šo skaitu reizina, tāpēc atvēršanas laiks aug ātrāk, nekā liecinātu failu izmēri.

Čaulas meklējumi, kas beidzas, pirms parādās izvēlne

Windows pievieno otru aizķeršanās avotu, kam nav nekā kopīga ar IDE. Explorer un tā čaulas paplašinājumi no jauna atrisina iepriekš izmantotos printerus, pievienotos diskus un saīsnes katru reizi, kad tiek atvērta konteksta izvēlne. Kad šie mērķi atrodas tīklā, kuru tunelis nesasniedz, katrs atrisinājums bloķējas, līdz beidzas taimauts, un tikai tad izvēlne tiek uzzīmēta. Tāpēc ar peles labo pogu var iekārties sekundes, kamēr pats fails atveras normāli.

Noņemiet mirušos kartējumus un printeru rindas vai paturiet tikai tos, kas pastāv tīklā, kurā jūs patiešām esat. Tā pati loģika attiecas uz visu, kas fonā atrisina ceļu, tostarp nesenās failu sarakstiem un piespraustajām mapēm.

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

Kāpēc uzvar vietējā darba kopija

Darbs tieši koplietotajā mapē ir sliktākais iestatījums rediģēšanas, būvēšanas un testēšanas ciklam, jo redaktors, kompilators un versiju kontroles klients katrs atsevišķi lasa šos attālos failus. Katrs no tiem maksā savu ceļu, un būvēšana maksā reizi par failu. Vietējā kopija ar pārbīdīšanu caur repozitoriju aizstāj sīku šķērsojumu plūdu ar vienu apzinātu. Savienojums nav uzlabojies; šķērsojumu skaits ir sagruvis.

Tas ir strukturālas izmaiņas, nevis regulēšanas vingrinājums, un tieši tāpēc tas darbojas, kad tuneļa iestatījumi nedarbojas. Tas arī padara atteices režīmu acīmredzamu: ja būvēšana ar vietējo kopiju joprojām ir lēna, koplietotā mape nekad nav bijusi problēma.

Pārvietojiet vēsturi kā vienu objektu

Kad pašam repozitorijam jāšķērso tunelis, sūtiet vēsturi vienā objektā, nevis ejot tai cauri. Pakotne ir viens fails un tāpēc viena pārsūtīšana, kamēr checkout, kas iet cauri tūkstošiem vaļīgu objektu, maksā tūkstošiem šķērsojumu. Mercurial un Git abi atbalsta šo formu.

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

Bāzes revīzija ir tā daļa, kas jātrāpa, jo tā izlemj, cik daudz vēstures ceļos. Visu sapakot darbojas un izšķiež savienojumu, kamēr sapakošana no pēdējās kopīgās izmaiņas pārvieto tikai to, kas trūkst otrai pusei.

Izmēriet trīs darbības, pirms vainojat joslas platumu

Izmēriet trīs lietas atsevišķi: viens mazs fails atvērts, viena mape uzskaitīta, viena saglabāšana pabeigta. Ja visas trīs ir lēnas proporcionāli failu skaitam, izmaksas ir ceļi turp un atpakaļ. Ja viens iekaras, bet pārējie ir labi, aizdomīgi par taimautu pret nesasniedzamu resursu, nevis joslas platumu. Pierakstiet, kurā tīklā iekārta bija katrā palaidienā, jo klēpjdators, kas atkārtoti pieslēdzas citam profilam, var mainīt atbildi starp mēģinājumiem.

Pēc tam atkārtojiet tos pašus trīs pret projekta vietējo kopiju. Atšķirība ir koplietotās mapes cena, un tas ir skaitlis, kas jācitē, kad kāds ierosina ātrāku savienojumu kā risinājumu.

Saistītie raksti