Re: [m-users.] Cartesian product of two sets of things.

Julien Fischer <[email protected]>
Newsgroups gmane.comp.lang.mercury.general
Message-ID <[email protected]>

On Tue, 10 Oct 2023, Volker Wysk wrote:

> Am Dienstag, dem 10.10.2023 um 19:41 +1100 schrieb Julien Fischer:
>> On Tue, 10 Oct 2023, Volker Wysk wrote:
>>
>>> Am Dienstag, dem 10.10.2023 um 17:06 +1100 schrieb Julien Fischer:
>>>> Hi Volker,
>>>>
>>>> On Mon, 9 Oct 2023, Volker Wysk wrote:
>>>>
>>>>> You're welcome. 
>>>>>
>>>>> I'm not sure how efficient this is, though.
>>>>
>>>> Not as efficient as it could be -- see cartesian_product1b in the
>>>> attached.
>>>
>>> desktop ~/src/cart_prod $ ./cproduct
>>> N = 250, repeats = 100, time1 = 250 ms, time2 = 2100 ms
>>>
>>> That's a high difference in speed... solutions/2 and solutions_set/2 should
>>> be avoided when speed is essential.
>>
>> It's more that det code is faster than the equivalent nondet code.
>> That's not particularly surpsising given that more has to be done
>> at runtime in order to execute nondet code.
>
> I see. And nondet/multi code only works when the results are collected by
> solutions somewhere. And solutions in turn only works with nondet/multi
> code, otherwise there isn't anything to collect.
>
> But the large difference in speed surprised me.

A big part of the difference would be that the nondet version sorts
the elements and (redundantly) attempt to remove duplicates, whereas the
det version just constructs the elements in reverse order directly.

Julien.

_______________________________________________
users mailing list
[email protected]
https://lists.mercurylang.org/listinfo/users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.