foreach (i; taskPool.parallel(0..2_000_000)

Steven Schveighoffer schveiguy at gmail.com
Sun Apr 2 15:32:05 UTC 2023


On 4/1/23 6:32 PM, Paul wrote:
> On Saturday, 1 April 2023 at 18:30:32 UTC, Steven Schveighoffer wrote:
>> On 4/1/23 2:25 PM, Paul wrote:
>>
>> ```d
>> import std.range;
>>
>> foreach(i; iota(0, 2_000_000).parallel)
>> ```
>>
> 
> Is there a way to tell if the parallelism actually divided up the work?  
> Both versions of my program run in the same time ~6 secs.

It's important to note that parallel doesn't iterate the range in 
parallel, it just runs the body in parallel limited by your CPU count.

If your `foreach` body takes a global lock (like `writeln(i);`), then 
it's not going to run any faster (probably slower actually).

If you can disclose more about what you are trying to do, it would be 
helpful.

Also make sure you have more than one logical CPU.

-Steve


More information about the Digitalmars-d-learn mailing list