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