İşte herhangi bir disk veya dizindeki tümörleri bulmak için derin örnekleme kullanan küçük bir uygulama. Dizin ağacını iki kez, ölçmek için bir kez ve dizinin altındaki 20 "rasgele" bayta giden yolu yazdırmak için ikinci kez yürür.
void walk(string sDir, int iPass, int64& n, int64& n1, int64 step){
foreach(string sSubDir in sDir){
walk(sDir + "/" + sSubDir, iPass, n, n1, step);
}
foreach(string sFile in sDir){
string sPath = sDir + "/" + sFile;
int64 len = File.Size(sPath);
if (iPass == 2){
while(n1 <= n+len){
print sPath;
n1 += step;
}
}
n += len;
}
}
void dscan(){
int64 n = 0, n1 = 0, step = 0;
// pass 1, measure
walk(".", 1, n, n1);
print n;
// pass 2, print
step = n/20; n1 = step/2; n = 0;
walk(".", 2, n, n1);
print n;
}
Program Dosyaları dizini için çıktı şöyle görünüyor:
7,908,634,694
.\ArcSoft\PhotoStudio 2000\Samples\3.jpg
.\Common Files\Java\Update\Base Images\j2re1.4.2-b28\core1.zip
.\Common Files\Wise Installation Wizard\WISDED53B0BB67C4244AE6AD6FD3C28D1EF_7_0_2_7.MSI
.\Insightful\splus62\java\jre\lib\jaws.jar
.\Intel\Compiler\Fortran\9.1\em64t\bin\tselect.exe
.\Intel\Download\IntelFortranProCompiler91\Compiler\Itanium\Data1.cab
.\Intel\MKL\8.0.1\em64t\bin\mkl_lapack32.dll
.\Java\jre1.6.0\bin\client\classes.jsa
.\Microsoft SQL Server\90\Setup Bootstrap\sqlsval.dll
.\Microsoft Visual Studio\DF98\DOC\TAPI.CHM
.\Microsoft Visual Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\sqlce20sql2ksp1.exe
.\Microsoft Visual Studio .NET 2003\SDK\v1.1\Tool Developers Guide\docs\Partition II Metadata.doc
.\Microsoft Visual Studio .NET 2003\Visual Studio .NET Enterprise Architect 2003 - English\Logs\VSMsiLog0A34.txt
.\Microsoft Visual Studio 8\Microsoft Visual Studio 2005 Professional Edition - ENU\Logs\VSMsiLog1A9E.txt
.\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\wce500\mipsiv\NETCFv2.wce5.mipsiv.cab
.\Microsoft Visual Studio 8\VC\ce\atlmfc\lib\armv4i\UafxcW.lib
.\Microsoft Visual Studio 8\VC\ce\Dll\mipsii\mfc80ud.pdb
.\Movie Maker\MUI\0409\moviemk.chm
.\TheCompany\TheProduct\docs\TheProduct User's Guide.pdf
.\VNI\CTT6.0\help\StatV1.pdf
7,908,634,694
Bana dizinin 7.9 gb olduğunu söylüyor.
- ~% 15 Intel Fortran derleyicisine gidiyor
- ~% 15 VS .NET 2003’e gidiyor
- ~% 20 VS 8'e gidiyor
Bunlardan herhangi birinin boşaltılıp kaldırılamayacağını soracak kadar basit.
Ayrıca, dosya sistemine dağıtılan ancak birlikte alındığında dosya türlerinden bahseder, yerden tasarruf için bir fırsat sunar:
- ~% 15 kabaca .cab ve .MSI dosyalarına gider
- ~% 10 kabaca metin dosyalarını kaydetmeye gidiyor
Orada da, "SmartDevices" ve "ce" desteği (~% 15) gibi, muhtemelen olmadan yapabildiğim birçok şey var.
Doğrusal zaman alır, ancak sık yapılması gerekmez.
Bulduğu şeylere örnekler:
- gerçekten kaydedilmesi gerekmeyen birçok kaydedilmiş kod havuzundaki DLL'lerin yedek kopyaları
- belirsiz bir dizinin altındaki, sunucudaki birisinin sabit diskinin yedek bir kopyası
- hacimli geçici internet dosyaları
- eski doktor ve yardım dosyaları uzun geçmişe ihtiyaç duyuluyor