Performance Issue

Vino.B via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Sep 6 07:38:39 PDT 2017


On Wednesday, 6 September 2017 at 10:58:25 UTC, Azi Hassan wrote:
> On Wednesday, 6 September 2017 at 08:10:35 UTC, Vino.B wrote:
>> in the next line of the code i say to list only folders that 
>> are greater than 10 Mb but this now is listing all folder 
>> (folder whose size is less than 10 MB are getting listed, not 
>> sure why.
>
> Is the size in GB ? If so, then subdirTotalGB = 
> (subdirTotal/1024/1024); needs to become subdirTotalGB = 
> (subdirTotal/1024/1024/1024); for it to take effect. But do 
> correct me if I'm wrong, I still haven't had my morning coffee.

Hi Azi,

   Your are correct, i tried to implement the fold in a separate 
small program as below, but not able to get the the required 
output, when you execute the below program the output you get is 
as below

Output:
[31460]
[31460, 1344448]
[31460, 1344448, 2277663]
[31460, 1344448, 2277663, 2277663]
[31460, 1344448, 2277663, 2277663, 31460]

Setup:

C:\\Temp\\TEST1\\BACKUP : This has 2 folder and 2 files in each 
folder
C:\\Temp\\TEST2\\EXPORT : This has 2 folder and 2 files in one 
folder and  1 file in another folder

Total files : 5

Required output:
[31460, 1344448] - Array 1 for the FS C:\\Temp\\TEST1\\BACKUP
[2277663, 2277663, 31460] - Array 2 for the 
C:\\Temp\\TEST2\\EXPORT

import std.algorithm: filter, map, fold;
import std.parallelism: parallel;
import std.file: SpanMode, dirEntries, isDir;
import std.stdio: writeln;
import std.typecons: tuple;
import std.path: globMatch;
import std.array;
void main () {
	ulong[] Alternate;
	string[] Filesys = ["C:\\Temp\\TEST1\\BACKUP", 
"C:\\Temp\\TEST2\\EXPORT"];
	foreach(FFs; Filesys)
		{
			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)) {
								Alternate ~= f[0]; writeln(Alternate);
																}
								}
		}
}

From,
Vino.B


More information about the Digitalmars-d-learn mailing list