Performance Issue

Vino.B via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Sep 6 23:26:46 PDT 2017


On Wednesday, 6 September 2017 at 18:44:26 UTC, Azi Hassan wrote:
> On Wednesday, 6 September 2017 at 18:21:44 UTC, Azi Hassan 
> wrote:
>> I tried to create a similar file structure on my Linux 
>> machine. Here's the result of ls -R TEST1:
>>
>> TEST1:
>> BACKUP
>>...
>
> Upon further inspection it looks like I messed up the output.
>
>> [31460]  - Array 1 for folder 1(all files in Folder 1) of the 
>> FS C:\\Temp\\TEST1\\BACKUP
>> [1344448]  - Array 2 for folder 2(all files in Folder 2) of 
>> the FS C:\\Temp\\TEST1\\BACKUP
>> [2277663, 2277663]  - Array 3 for folder 1(all files in Folder 
>> 1) of the FS C:\\Temp\\TEST2\\EXPOR
>> [31460] - Array 4 for folder 2(all files in Folder 2) the FS 
>> C:\\Temp\\TEST2\\EXPORT
>
>>What files do these sizes correspond to ? Shouldn't there be 
>>two elements in the first array because 
>>C:\Temp\TEST1\BACKUP\FOLDER1 contains two files ?

Hi Azi,

  Was able to implement "fold", below is the update code, 
regarding container array, I have almost completed my 
program(Release 1), so it is not a good idea to convert the 
program from standard array to container array at this point. 
Some staring tomorrow i would be working on(Release 2) where in 
this release i plan to make the above changes. I have not reached 
my study on container array, so can you help me on how to 
implement the container array for the below code.
Note : I have raised another thread "Container Array" asking the 
same.

string[][] coSizeDirList (string FFs, int SizeDir) {
	ulong subdirTotal = 0;
	ulong subdirTotalGB;
	auto Subdata = appender!(string[][]); Subdata.reserve(100);
     auto dFiles = dirEntries(FFs, SpanMode.shallow).filter!(a => 
a.isDir).map!(a => tuple(a.name, a.size)).array;
     foreach (d; dFiles) {
				auto SdFiles = dirEntries(join(["\\\\?\\", d[0]]), 
SpanMode.depth).map!(a => tuple(a.size)).array;
				foreach(f; parallel(SdFiles, 1)) { subdirTotal += f.fold!((a, 
b) => a + b); }
					subdirTotalGB = (subdirTotal/1024/1024);
					if (subdirTotalGB > SizeDir) { Subdata ~= [d[0], 
to!string(subdirTotalGB)]; }
					 subdirTotal = 0;
		    }
			return Subdata.data;
}

Note To All :

I am basically a Admin guy, so started learning D a few months 
ago and found it very interesting, hence i raise so many 
question, so request you to adjust with me for a while.


From,
Vino.B


More information about the Digitalmars-d-learn mailing list