VPN paylaşımında Visual Studio yavaş: kaydetme neden gidiş-dönüşlere dönüşür
Paylaşım üzerinden düzenleme, kaydetmeyi, menüleri ve değişiklik izlemeyi gidiş-dönüşlere dönüştürür. Çalışma kopyasını yerel yapın ve geçmişi baştan sona yürümek yerine tek bir nesne olarak paketleyin.
Yerel diskten bir saniyede açılan bir çözüm, tünel üzerinden erişilen bir paylaşımdan otuz saniyede açılır. Tünel tek başına nadiren nedendir. Değişen şey, eskiden yerel çağrı olan işlemlerin eşzamanlı gidiş-dönüşlere dönüşmesi ve düzenleyicinin pencere görünmeden önce bunlardan birkaçını yapmasıdır. Aşağıdaki mekanizma her birinin neden pahalı olduğunu ve hangilerini kaldırabileceğinizi açıklar.
Bir dosya açıkken düzenleyici ne yapar
Değişiklik izleme özelliği olan bir düzenleyici, açık olan her dosyada bir abonelik tutar. Yerel bir birim bu aboneliği ağ olmadan dosya sisteminden karşılar. Paylaşım üzerinden aynı özellik, bildirim modeli SMB üzerinde aynı davranmadığı için tekrarlanan meta veri okumalarına bozulabilir. Değişiklik izlemeyi kapatmak dürüst bir ilk deneydir, çünkü tünele dokunmadan bütün bir istek sınıfını ortadan kaldırır.
Proje sistemi kendi trafiğini ekler. Bir çözümün yüklenmesi dizinleri numaralandırır, proje dosyalarını okur ve SDK veya paketleri araştırabilir; yol uzak olduğunda her araştırma bir gidiş-dönüştür. Çok projeli bir çözüm bu sayıyı çarpar, bu yüzden açılma süresi dosya boyutlarının ima ettiğinden daha hızlı büyür.
Menü görünmeden süresi dolan kabuk aramaları
Windows, IDE ile hiçbir ilgisi olmayan ikinci bir takılma kaynağı ekler. Explorer ve kabuk uzantıları, bir bağlam menüsü her açıldığında daha önce kullanılan yazıcıları, eşlenen sürücüleri ve kısayolları yeniden çözer. Bu hedefler tünelin ulaşamadığı bir ağdaysa, her çözümleme bir zaman aşımı dolana kadar bloke olur ve ancak ondan sonra menü çizilir. Bu yüzden dosyanın kendisi normal açılırken sağ tıklama saniyelerce asılı kalabilir.
Ölü eşlemeleri ve yazıcı kuyruklarını kaldırın ya da yalnızca gerçekten bulunduğunuz ağda var olanları tutun. Aynı mantık, son dosya listeleri ve sabitlenmiş klasörler dahil olmak üzere arka planda bir yolu çözen her şeyi kapsar.
net use
Get-Printer | Select-Object Name, PortName
Measure-Command { Get-ChildItem \files\proj | Out-Null }
Yerel çalışma kopyası neden kazanır
Doğrudan paylaşım üzerinde çalışmak, düzenle-derle-test döngüsü için en kötü düzenlemedir, çünkü düzenleyici, derleyici ve sürüm denetimi istemcisi bu uzak dosyaları ayrı ayrı okur. Her biri kendi gidiş-dönüşünü öder ve bir derleme dosya başına bir kez öder. Depo üzerinden itme yapan yerel bir kopya, küçük geçişlerin selini tek bir kasıtlı geçişle değiştirir. Bağlantı iyileşmedi; geçişlerin sayısı çöktü.
Bu bir ayar alıştırması değil yapısal bir değişikliktir ve tünel ayarları işe yaramadığında işe yaramasının nedeni tam olarak budur. Ayrıca hata biçimini belirginleştirir: yerel bir kopyayla derleme hâlâ yavaşsa, paylaşım hiçbir zaman sorun olmamıştır.
Geçmişi tek bir nesne olarak taşıyın
Deponun kendisi tüneli geçmek zorunda kaldığında, geçmişi baştan sona yürümek yerine tek bir nesnede gönderin. Paket tek bir dosyadır ve dolayısıyla tek bir aktarımdır; binlerce gevşek nesneyi yürüyen bir checkout ise binlerce geçişe mal olur. Mercurial ve Git ikisi de bu biçimi destekler.
hg bundle --base 9f2c1a7e outgoing.hg
hg unbundle outgoing.hg
git bundle create repo.bundle main
git clone repo.bundle repo
Temel revizyon doğru tutturulması gereken kısımdır, çünkü ne kadar geçmişin yolculuk edeceğine o karar verir. Her şeyi paketlemek çalışır ve bağlantıyı harcar; son ortak değişiklikten paketlemek ise yalnızca diğer tarafın eksik olduğunu taşır.
Bant genişliğini suçlamadan önce üç işlemi ölçün
Üç şeyi ayrı ayrı ölçün: küçük bir dosya açıldı, bir dizin listelendi, bir kaydetme tamamlandı. Üçü de dosya sayısıyla orantılı olarak yavaşsa maliyet gidiş-dönüşlerdir. Biri takılırken diğerleri iyiyse, bant genişliği değil ulaşılamayan bir kaynağa karşı zaman aşımından şüphelenin. Her çalıştırmada makinenin hangi ağda olduğunu not edin, çünkü başka bir profile yeniden bağlanan bir dizüstü bilgisayar denemeler arasında yanıtı değiştirebilir.
Ardından aynı üçünü projenin yerel bir kopyasına karşı yineleyin. Fark paylaşımın bedelidir ve birisi çözüm olarak daha hızlı bir bağlantı önerdiğinde alıntılanması gereken sayı budur.