O soluție care se deschide într-o secundă de pe un disc local are nevoie de treizeci de secunde pentru a se deschide de pe un partaj accesat printr-un tunel. Tunelul este rareori cauza în sine. Ce se schimbă este că operațiile care erau apeluri locale devin dus-întorsuri sincrone, iar editorul execută mai multe dintre ele înainte ca fereastra să apară. Mecanismul de mai jos explică de ce fiecare este costisitor și pe care le puteți elimina.

Ce face editorul cât timp un fișier este deschis

Un editor cu urmărirea modificărilor menține un abonament pe fiecare fișier deschis. Un volum local servește acel abonament din sistemul de fișiere fără rețea. Printr-un partaj aceeași funcție poate degenera în citiri repetate de metadate, pentru că modelul de notificări nu se comportă la fel prin SMB. Dezactivarea urmăririi modificărilor este un prim experiment corect, întrucât elimină o întreagă clasă de cereri fără a atinge tunelul.

Sistemul de proiecte adaugă trafic propriu. Încărcarea unei soluții enumeră directoare, citește fișiere de proiect și poate sonda SDK-uri sau pachete, iar fiecare sondare este un dus-întors când calea este la distanță. O soluție cu multe proiecte multiplică acel număr, de aceea timpul de deschidere crește mai repede decât ar sugera dimensiunile fișierelor.

Interogări ale shell-ului care expiră înainte să apară meniul

Windows aduce o a doua sursă de blocaje care nu are nicio legătură cu IDE-ul. Explorer și extensiile sale de shell rezolvă din nou imprimante, unități mapate și comenzi rapide folosite anterior de fiecare dată când se deschide un meniu contextual. Când acele ținte sunt într-o rețea pe care tunelul nu o poate atinge, fiecare rezolvare se blochează până expiră un timp limită, și abia apoi meniul este desenat. De aceea un clic dreapta poate rămâne blocat secunde întregi în timp ce fișierul se deschide normal.

Eliminați mapările moarte și cozile de imprimare sau păstrați doar pe cele care există în rețeaua în care vă aflați cu adevărat. Același raționament acoperă tot ce rezolvă o cale în fundal, inclusiv listele de fișiere recente și folderele fixate.

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

De ce câștigă o copie de lucru locală

Lucrul direct pe partaj este cea mai proastă configurare pentru un ciclu de editare, compilare și testare, pentru că editorul, compilatorul și clientul de control al versiunilor citesc fiecare acele fișiere la distanță separat. Fiecare plătește propriul dus-întors, iar o compilare plătește o dată pe fișier. O copie locală cu trimiteri prin depozit înlocuiește un potop de traversări mici cu una singură intenționată. Legătura nu s-a îmbunătățit; numărul de traversări s-a prăbușit.

Aceasta este o schimbare structurală, nu un exercițiu de reglare, și exact de aceea funcționează atunci când setările tunelului nu funcționează. Face de asemenea evident modul de eșec: dacă compilarea este încă lentă cu o copie locală, partajul nu a fost niciodată problema.

Mutați istoricul ca un singur obiect

Când depozitul însuși trebuie să traverseze tunelul, trimiteți istoricul într-un singur obiect în loc să-l parcurgeți. Un pachet este un singur fișier și deci un singur transfer, în timp ce un checkout care parcurge mii de obiecte libere costă mii de traversări. Mercurial și Git acceptă ambele acea formă.

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

Revizia de bază este partea care trebuie nimerită, pentru că decide cât istoric călătorește. Împachetarea tuturor funcționează și irosește legătura, în timp ce împachetarea de la ultima modificare comună mută doar ce lipsește celeilalte părți.

Măsurați trei operații înainte de a da vina pe lățimea de bandă

Măsurați trei lucruri separat: un fișier mic deschis, un director listat, o salvare finalizată. Dacă toate trei sunt lente proporțional cu numărul de fișiere, costul sunt dus-întorsurile. Dacă unul se blochează în timp ce celelalte sunt în regulă, suspectați un timp limită către o resursă inaccesibilă, nu lățimea de bandă. Notați în ce rețea era mașina la fiecare rulare, pentru că un laptop care se reconectează la alt profil poate schimba răspunsul între încercări.

Apoi repetați aceleași trei împotriva unei copii locale a proiectului. Diferența este prețul partajului, și acesta este numărul de citat când cineva propune o legătură mai rapidă drept soluție.

Articole similare