Visual Studio lėtai veikia VPN bendrinamame kataloge: kodėl išsaugojimas virsta kelionėmis pirmyn ir atgal
Redagavimas per bendrinamą katalogą paverčia išsaugojimą, meniu ir pakeitimų sekimą kelionėmis pirmyn ir atgal. Perkelkite darbinę kopiją į vietinę ir perduokite istoriją kaip vieną objektą, o ne ją pereidami.
Sprendimas, kuris atsidaro per sekundę iš vietinio disko, iš bendrinamo katalogo, pasiekiamo per tunelį, atsidaro per trisdešimt sekundžių. Tunelis retai kada yra priežastis pats savaime. Keičiasi tai, kad operacijos, kurios buvo vietiniai iškvietimai, tampa sinchroninėmis kelionėmis pirmyn ir atgal, ir redaktorius atlieka kelias iš jų, kol langas pasirodo. Toliau pateiktas mechanizmas paaiškina, kodėl kiekviena brangi ir kurias galite pašalinti.
Ką redaktorius daro, kol failas atidarytas
Redaktorius su pakeitimų sekimu laiko prenumeratą kiekvienam atidarytam failui. Vietinis tomas aptarnauja tą prenumeratą iš failų sistemos be tinklo. Per bendrinamą katalogą ta pati funkcija gali sugesti iki pasikartojančių metaduomenų skaitymų, nes pranešimų modelis per SMB elgiasi ne taip pat. Pakeitimų sekimo išjungimas yra sąžiningas pirmas eksperimentas, nes jis pašalina visą užklausų klasę neliečiant tunelio.
Projektų sistema prideda savo srautą. Sprendimo įkėlimas išvardija katalogus, skaito projekto failus ir gali tikrinti SDK ar paketus, o kiekvienas tikrinimas yra kelionė pirmyn ir atgal, kai kelias yra nutolęs. Sprendimas su daug projektu padaugina tą skaičių, todėl atidarymo laikas auga greičiau, nei leistų manyti failų dydžiai.
Apvalkalo paieškos, kurios pasibaigia prieš pasirodant meniu
Windows prideda antrą strigimų šaltinį, kuris neturi nieko bendra su IDE. Explorer ir jo apvalkalo plėtiniai iš naujo išsprendžia anksčiau naudotus spausdintuvus, prijungtus diskus ir nuorodas kiekvieną kartą atidarant kontekstinį meniu. Kai tie taikiniai yra tinkle, kurio tunelis nepasiekia, kiekvienas sprendimas blokuoja, kol baigiasi laiko limitas, ir tik tada meniu nupiešiamas. Todėl dešinysis paspaudimas gali kaboti kelias sekundes, kol pats failas atsidaro normaliai.
Pašalinkite negyvus priskyrimus ir spausdinimo eiles arba palikite tik tuos, kurie egzistuoja tinkle, kuriame iš tikrųjų esate. Ta pati logika galioja viskam, kas fone išsprendžia kelią, įskaitant naujausių failų sąrašus ir prisegtus aplankus.
net use
Get-Printer | Select-Object Name, PortName
Measure-Command { Get-ChildItem \files\proj | Out-Null }
Kodėl laimi vietinė darbinė kopija
Dirbti tiesiai bendrinamame kataloge yra blogiausia sąranka redagavimo, kūrimo ir testavimo ciklui, nes redaktorius, kompiliatorius ir versijų valdymo klientas kiekvienas atskirai skaito tuos nutolusius failus. Kiekvienas jų moka už savo kelionę, o kūrimas moka kartą už failą. Vietinė kopija su išstūmimu per saugyklą pakeičia smulkių perėjimų srautą vienu sąmoningu. Ryšys nepagerėjo; perėjimų skaičius sugriuvo.
Tai struktūrinis pokytis, o ne derinimo pratimas, ir būtent todėl jis veikia, kai tunelio nustatymai neveikia. Jis taip pat padaro gedimo režimą akivaizdų: jei kūrimas su vietine kopija vis dar lėtas, bendrinamas katalogas niekada nebuvo problema.
Perkelkite istoriją kaip vieną objektą
Kai pati saugykla turi kirsti tunelį, siųskite istoriją viename objekte, o ne pereidami ją. Paketas yra vienas failas ir todėl vienas perdavimas, o checkout, kuris pereina tūkstančius laisvų objektų, kainuoja tūkstančius perėjimų. Mercurial ir Git abu palaiko tą formą.
hg bundle --base 9f2c1a7e outgoing.hg
hg unbundle outgoing.hg
git bundle create repo.bundle main
git clone repo.bundle repo
Bazinė versija yra ta dalis, kurią reikia pataikyti, nes ji nusprendžia, kiek istorijos keliaus. Supakuoti viską veikia ir eikvoja ryšį, o pakavimas nuo paskutinio bendro pakeitimo perkelia tik tai, ko trūksta kitai pusei.
Išmatuokite tris operacijas, prieš kaltindami pralaidumą
Išmatuokite tris dalykus atskirai: vienas mažas failas atidarytas, vienas katalogas išvardytas, vienas išsaugojimas baigtas. Jei visi trys lėti proporcingai failų skaičiui, kaina yra kelionės pirmyn ir atgal. Jei vienas stringa, o kiti gerai, įtarkite laiko limitą nepasiekiamam ištekliui, o ne pralaidumą. Užsirašykite, kokiame tinkle mašina buvo kiekvieno paleidimo metu, nes nešiojamasis kompiuteris, vėl prisijungęs prie kito profilio, gali pakeisti atsakymą tarp bandymų.
Tada pakartokite tuos pačius tris su vietine projekto kopija. Skirtumas yra bendrinamo katalogo kaina, ir tai yra skaičius, kurį reikia cituoti, kai kas nors siūlo spartesnį ryšį kaip sprendimą.