“Tüm boyutları hesapla” yı katlanarak daha hızlı hale getirmek için Lion'daki Finder listesi görünümünü ne değiştirdi?


10

Mac OS X sahneye çıkmadan çok önce , söz konusu Finder penceresi için her klasörde bulunan okunabilir dosya boyutu alanının toplamını belirlemek için Finder'dan tüm boyutları hesaplamasını istedik .

Bulucu - liste görünümü - görünüm seçeneklerini göster - Tüm boyutları hesapla

SSD'nin olup olmadığı önemli olmayan birkaç Mac'teki klasörlerin Liste görünümü boyutlandırmasını test ettim, ancak Lion boyutları hesaplamakta çok hızlı Yeni önbellekleme veri yapısı olup olmadığını veya Finder'ın Bu hesaplamayı son derece hızlandırmak için Spotlight'tan veya benzer bir veritabanından meta veri bilgileri.


1
Pencereyi nereden aldın? Alttaki "Varsayılan Olarak Kullan" düğmesine dayanarak, "Görünüm Seçeneklerini Göster" penceresine (<kbd> ⌘J </kbd>) benziyor, ancak alt bölümde gösterilecek bir şey bulamadım.
Cajunluke

1
@CajunLuke "Görünüm Seçeneklerini Göster" penceresini açmadan önce pencere görünümünüzü listeye değiştirmeniz gerekir.
pdd

Yanıtlar:


3

Lion'un bir klasördeki boyutları ilk kez hesaplarken klasör (ve paket / paket) boyutlarını hesaplamada daha hızlı olduğunu gözlemlemedim. Ancak, aynı klasörde sonraki hesaplamalar çok daha hızlı görünüyor.

Algılanan çabukluğun bir kısmı, Finder'ın hesaplanana kadar "-" göstermek yerine klasör boyutlarını yeniden hesaplarken önceden hesaplanan boyutları hemen gri metinde göstermesi olabilir. Bir klasörün boyutu yeniden hesaplandıktan sonra, numara güncellenir (boyut değiştiyse) ve siyaha döner.

Finder daha önce hesaplanan klasör boyutlarını gözle görülür biçimde önbelleğe aldığından, yalnızca son hesaplanmasından bu yana değişen klasörlerin boyutlarını yeniden hesaplaması mümkündür.


Bence bu sorunun konusu. Önbelleğe alma çok daha iyidir ve kısmi veya eski sonuçlar artımlı olarak görüntülenir. Algoritmanın görünümdeki verileri doldurmak için ayarlanıp ayarlanmadığını söyleyemem, ancak tek başına önbellekleme, şimdi pratikte nasıl çalıştığı ile ilgili zevkimin cevabı gibi görünüyor.
bmike

Birkaç ay boyunca bunu yakından gözlemledikten sonra, tamamen haklısınız. Önbellekleme mekanizması o kadar iyi ki bir süredir kullandığım Mac'lerde bu veriler neredeyse her zaman doğru ve anlık. İşletim sisteminin tüm bilgileri toplaması gerektiğinden, yalnızca yeniden yükleme veya konfederasyondan kısa bir süre sonra yeni bir mac'ta fark edilir.
bmike

7

Lion'dan önce, Finder.app'daki Dosya Boyutu sütunu, her dosya için gereken dosya boyutunu değil, sabit diskte gereken boyutu görüntüler. Örneğin, 1 bayt dosyaları 4 KB olarak görüntüleniyordu, çünkü aslında HFS biçimli bir sistemde 4 KB alan kaplıyorlar. Bilgi Al (veya kullanarak sonra Terminal.app gibi, farklı bir uygulamayla ve> açılış Dosya dışındaki 1 byte gerçek dosya boyutunu görmek için kolay bir yolu yoktu ls -lsa, ya da benzeri bir Finder.app yedek TotalFinder.app ).

(Gün içinde bunu bugreport.apple.com adresinde hata 8926275 olarak bildirdim .)

Lion'dan itibaren, bu davranış düzeltildi ve Dosya Boyutu sütunu artık sabit diskte ayırdığı boyuttan (dosya sistemine zaten bağlıdır) değil, her dosya için tam dosya boyutunu gösterecektir.

Bu boyutlar lsTerminal'deki ikili dosyadan alacağınız sayılarla aynı olduğundan hesaplamak çok daha verimlidir.


1
Bu da müthiş bir detay. SSD daha yaygın hale geldikçe ve depolama anlık görüntülerle daha karmaşık hale geldikçe, bir dosyanın belirli bir örneğinin ne kadar yer kapladığı konusunda endişelenmeyi bırakıp fizikselin aksine dosyaların mantıksal boyutu hakkında endişelenmeyi bıraktığımı düşünüyorum.
bmike

Bunu anlamıyorum. Bu nasıl daha verimli? Her stat(2)iki numarayı almaktan tek bir çağrı sorumlu değil mi? Ve ls(1)paketlerin / paketlerin / klasörlerin gerçek boyutunu hiç göstermiyor, bu yüzden neden alakalı olduğu hakkında hiçbir fikrim yok.
Ken

@Ken ls, normal dosyalar için dosya boyutlarını iyi gösterir. stataynısını tek bir dosya için de yapabilir. Demek istediğim, artık paket / paket / klasör boyutunu hesaplamak için gereken “ekstra iş” artık normal dosyalar için değil, yalnızca paketler / paketler / klasörler için gerekli.
Mathias Bynens

Mathias: Evet, lsnormal dosyalar için dosya boyutlarını gösterir, paketler için değil (söylediklerim budur). Bunu arayarak yapar stat. Daha önce normal dosyalar için hangi "ekstra iş" gerekiyordu? Tek bir statçağrı hem blokları ( st_blocks) hem de baytları ( st_size) döndürür .
Ken

1

Dosya boyutlarını önbelleğe almak için Spotlight meta verilerini kullanıyor olsaydı şaşırmazdım. Dosya sistemindeki tüm değişiklikleri izlemek için FSEvents'ı ve tüm bu değişiklikleri yedeklemek için Time Machine'i kullanıyorsanız, toplam dosya boyutlarını hesaplama ve depolama ek maliyeti göz ardı edilebilir.


Meta veriler veya başka bir şekilde fasulye dökmek için fs_events alabilir miyim göreceğim. Gündem verilerini okumayı çok isterim - ancak henüz doğrudan kanıtım yok.
bmike

1

OS X Lion'dan başlayarak Apple, işletim sisteminin Spotlight gibi sistem özelliklerinde dosya izleme için kullandığı bir SQLite veritabanı ekledi. Her seferinde dosya sistemini denetlemek yerine bir SQLite veritabanından sorgulama yapmak, performans iyileştirmesinin nedeni olabilir. John Siracusa'nın OS X Lion incelemesi, Lion'daki dosya sistemindeki değişiklikleri derinlemesine açıklıyor. Özellikle, burada yeni SQLite veritabanında bir açıklama bulacaksınız .

Bu yardımcı olur umarım.


Bu çok hoş bir bağlantıdır, ancak SQLite veritabanı, tüm sürücülerimde yalnızca sürücüdeki toplam dosyaların küçük bir alt kümesi olan sürümlere sahip belgeleri izlemek için görünür. Tüm dosya boyutlarını depolayan bir veritabanına bağlantı bulabilirseniz, dosya sistemi bunu yapmak için zaten bir veritabanı olduğundan, bu en azından söylemek ilginç olurdu, değil mi?
bmike
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.