Berikut adalah aplikasi kecil yang menggunakan pengambilan sampel dalam untuk menemukan tumor di disk atau direktori apa pun. Itu berjalan pohon direktori dua kali, sekali untuk mengukurnya, dan kedua kalinya untuk mencetak jalan ke 20 byte "acak" di bawah direktori.
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;
}
Outputnya terlihat seperti ini untuk direktori Program Files saya:
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
Ini memberitahu saya bahwa direktori tersebut 7.9gb, di antaranya
- ~ 15% masuk ke kompiler Intel Fortran
- ~ 15% jatuh ke VS .NET 2003
- ~ 20% berlaku untuk VS 8
Cukup sederhana untuk bertanya apakah semua ini dapat dibongkar.
Ini juga menceritakan tentang jenis file yang didistribusikan di seluruh sistem file, tetapi secara bersama-sama mewakili peluang untuk menghemat ruang:
- ~ 15% kurang lebih masuk ke file .cab dan .MSI
- ~ 10% kurang lebih masuk ke pendataan file teks
Ini menunjukkan banyak hal lain di sana juga, yang mungkin bisa saya lakukan tanpa, seperti "SmartDevices" dan "ce" dukungan (~ 15%).
Memang butuh waktu linier, tetapi tidak harus sering dilakukan.
Contoh hal yang telah ditemukan:
- salinan cadangan DLL dalam banyak repositori kode tersimpan, yang tidak benar - benar perlu disimpan
- salinan cadangan dari hard drive seseorang di server, di bawah direktori yang tidak jelas
- banyak file internet sementara
- dokumen kuno dan file bantuan sudah lama dibutuhkan