On Monday, 4 September 2017 at 14:42:45 UTC, Azi Hassan wrote:
On Monday, 4 September 2017 at 05:45:18 UTC, Vino.B wrote:
In order to resolve the issue "Using closure causes GC allocation" it was stated that we need to use delegates

Alternatively you can drop the functional style and use a foreach loop that doesn't require delegates, but you'd still need the GC to store the result in an array. And even then you could still use Array (from std.container).

Hi All,

Was able to resolve this issue, thank you for your help, below is the changes that i did to resolve the issue.


import std.stdio: File,writeln;
import std.datetime.systime: Clock, days, SysTime;
import std.file: SpanMode, dirEntries, exists, isFile, mkdir, remove;
import std.typecons: tuple, Tuple;
import std.algorithm:  filter, map, each;
import std.array: array;

Tuple!(string)[] logClean (string[] Lglst, int LogAge) {
        if (!Lglst[0].exists) { mkdir(Lglst[0]); }
auto dFiles = dirEntries(Lglst[0], SpanMode.shallow).filter!(a =a.exists && a.isFile && a.timeCreated < dtLogAge).map!(a =tuple(a.name)).array;
        dFiles.each!(a =a[0].remove);
        return dFiles;
}

SysTime dtLogAge () {
int LogAge = mParams[1];
auto ct2 = Clock.currTime();
auto st2 = ct2 + days(-LogAge);
return st2;
}

void main () {
string[] LogDir = ["C:\\Users\\admin\\Desktop\\Current\\Script\\D\\Logs"];
logClean(LogDir);
}

"mParams" is another function that reads the value from the configuration file and returns the value for the LogAge as defined in the configuration file.

From,
Vino.B

Reply via email to