Рашэнне, якое адкрываецца за секунду з лакальнага дыска, адкрываецца за трыццаць секунд з рэсурсу, дасягнутага праз тунель. Тунель рэдка бывае прычынай сам па сабе. Змяняецца тое, што аперацыі, якія былі лакальнымі выклікамі, становяцца сінхроннымі кругавымі запытамі, і рэдактар выконвае некалькі з іх, перш чым з’явіцца акно. Механізм ніжэй тлумачыць, чаму кожны з іх каштуе дорага і якія вы можаце прыбраць.

Што робіць рэдактар, пакуль файл адкрыты

Рэдактар з адсочваннем змен трымае падпіску на кожны адкрыты файл. Лакальны том абслугоўвае гэтую падпіску з файлавай сістэмы без удзелу сеткі. Праз агульны рэсурс тая ж функцыя можа ператварыцца ў паўторныя чытанні метаданых, бо мадэль апавяшчэнняў не працуе так жа праз SMB. Адключэнне адсочвання змен — справядлівы першы эксперымент, бо яно прыбірае цэлы клас запытаў, не закранаючы тунель.

Сістэма праекта дадае ўласны трафік. Загрузка рашэння пералічвае каталогі, чытае файлы праекта і можа шукаць SDK або пакеты, а кожны пошук — кругавы запыт, калі шлях аддалены. Рашэнне з мноствам праектаў памнажае гэты лік, таму час адкрыцця расце хутчэй, чым падказваюць памеры файлаў.

Пошукі абалонкі, якія сканчваюцца раней, чым з’явіцца меню

Windows дадае другую крыніцу затармажэнняў, якая не мае нічога агульнага з IDE. Explorer і яго пашырэнні абалонкі штораз пры адкрыцці кантэкстнага меню нанова развязваюць прынтары, падключаныя дыскі і ярлыкі, якія выкарыстоўваліся раней. Калі гэтыя мэты знаходзяцца ў сетцы, недасяжнай для тунеля, кожнае развязанне блакуецца, пакуль не скончыцца тайм-аўт, і толькі тады меню малюецца. Таму пстрычка правай кнопкай можа завіснуць на секунды, пакуль сам файл адкрываецца нармальна.

Прыбярыце мёртвыя мапіраванні і чэргі прынтараў або пакіньце толькі тыя, што існуюць у сетцы, у якой вы насамрэч знаходзіцеся. Тое ж разважанне тычыцца ўсяго, што развязвае шлях у фоне, уключаючы спісы нядаўніх файлаў і замацаваныя папкі.

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

Чаму перамагае лакальная працоўная копія

Праца непасрэдна на агульным рэсурсе — найгоршая схема для цыклу праўка-зборка-тэст, бо рэдактар, кампілятар і кліент кантролю версій чытаюць гэтыя аддаленыя файлы паасобку. Кожны з іх плаціць за свой кругавы запыт, а зборка плаціць раз на файл. Лакальная копія з адпраўкай праз рэпазітар замяняе паток дробных пераходаў адным наўмысным. Лінія не палепшылася; колькасць пераходаў абрынулася.

Гэта структурная змена, а не практыкаванне па наладзе, і менавіта таму яна працуе, калі налады тунеля не працуюць. Яна таксама робіць рэжым адмовы відавочным: калі зборка ўсё яшчэ павольная з лакальнай копіяй, агульны рэсурс ніколі не быў праблемай.

Перамяшчайце гісторыю адным аб’ектам

Калі сам рэпазітар мусіць перасекчы тунель, адпраўляйце гісторыю адным аб’ектам, а не перабірайце яе. Пакет — гэта адзін файл і таму адна перадача, тады як checkout, які перабірае тысячы асобных аб’ектаў, каштуе тысячы пераходаў. Mercurial і Git падтрымліваюць такую форму.

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

Базавая рэвізія — гэта частка, якую трэба зрабіць правільна, бо яна вырашае, колькі гісторыі падарожнічае. Пакаваць усё працуе і марнуе лінію, а пакаванне ад апошняй агульнай змены пераносіць толькі тое, чаго не хапае іншаму боку.

Замярайце тры аперацыі, перш чым вінаваціць прапускную здольнасць

Замярайце тры рэчы асобна: адкрыццё аднаго дробнага файла, пералік аднаго каталога, завяршэнне аднаго захавання. Калі ўсе тры павольныя прапарцыйна колькасці файлаў, кошт — гэта кругавыя запыты. Калі адзін застаецца, а астатнія ў норме, падазравайце тайм-аўт супраць недасяжнага рэсурсу, а не прапускную здольнасць. Занатуйце, у якой сетцы была машына пры кожным запуску, бо ноўтбук, які перападключаецца да іншага профілю, можа змяніць адказ паміж спробамі.

Пасля паўтарыце тыя ж тры замеры супраць лакальнай копіі праекта. Розніца — гэта цана агульнага рэсурсу, і менавіта гэтую лічбу варта называць, калі хтосьці прапануе хутчэйшую лінію як рашэнне.

Падобныя артыкулы