newCTFE Status July 2017
Stefan Koch via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jul 20 03:04:00 PDT 2017
On Thursday, 13 July 2017 at 12:45:19 UTC, Stefan Koch wrote:
> [ ... ]
Hi Guys,
The following code compiles now and runs in very reasonable time
even for unreasonable repeat-counts.
string repeatString(string s, uint repeatCount)
{
char[] result;
uint sLength = cast(uint) s.length;
result.length = sLength * repeatCount;
uint p1 = 0;
uint p2 = sLength;
foreach(rc;0 .. repeatCount)
{
result[p1 .. p2] = s[0 .. sLength];
p1 += sLength;
p2 += sLength;
}
return cast(string) result;
}
Note: a version that uses `result ~= s` runs much much slower and
will soon run out of the 16M heapMemory.
static assert(
"o_o ".repeatString(24) ==
`o_o o_o o_o o_o o_o o_o o_o o_o o_o o_o o_o o_o o_o o_o o_o
o_o o_o o_o o_o o_o o_o o_o o_o o_o `
);
More information about the Digitalmars-d
mailing list