Why is this code slow?
Salih Dincer
salihdb at hotmail.com
Fri Mar 29 00:47:20 UTC 2024
On Friday, 29 March 2024 at 00:04:14 UTC, Serg Gini wrote:
> On Thursday, 28 March 2024 at 23:15:26 UTC, Salih Dincer wrote:
>> There is no such thing as parallel programming in D anyway. At
>> least it has modules, but I didn't see it being works.
>> Whenever I use toys built in foreach() it always ends in
>> disappointment
>
> I think it just works :)
> Which issues did you have with it?
A year has passed and I have tried almost everything! Either it
went into an infinite loop or nothing changed at the speed. At
least things are not as simple as openMP on the D side! First I
tried this code snippet: futile attempt!
```d
struct RowlandSequence {
import std.numeric : gcd;
import std.format : format;
import std.conv : text;
long b, r, a = 3;
enum empty = false;
string[] front() {
string result = format("%s, %s", b, r);
return [text(a), result];
}
void popFront() {
long result = 1;
while(result == 1) {
result = gcd(r++, b);
b += result;
}
a = result;
}
}
enum BP {
f = 1, b = 7, r = 2, a = 1, /*
f = 109, b = 186837516, r = 62279173, //*/
s = 5
}
void main()
{
RowlandSequence rs;
long start, skip;
with(BP) {
rs = RowlandSequence(b, r);
start = f;
skip = s;
}
rs.popFront();
import std.stdio, std.parallelism;
import std.range : take;
auto rsFirst128 = rs.take(128);
foreach(r; rsFirst128.parallel)
{
if(r[0].length > skip)
{
start.writeln(": ", r);
}
start++;
}
}
```
SDB at 79
More information about the Digitalmars-d-learn
mailing list