| Deutsch English Français Italiano |
|
<vgnsmu$d3as$1@solani.org> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.roellig-ltd.de!open-news-network.org!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: Mild Shock <janburse@fastmail.fm>
Newsgroups: comp.lang.prolog
Subject: Re: PIPs from the Basilisk Chamber (Was: 50 Years of Prolog Nonsense)
Date: Sat, 9 Nov 2024 15:47:59 +0100
Message-ID: <vgnsmu$d3as$1@solani.org>
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com>
<b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com>
<5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com>
<1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<u4ad9j$8n92$1@solani.org> <vdbrc4$1327p$1@solani.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sat, 9 Nov 2024 14:47:58 -0000 (UTC)
Injection-Info: solani.org;
logging-data="429404"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Firefox/91.0 SeaMonkey/2.53.19
Cancel-Lock: sha1:f308wDGGjbmLHteGudIwnnExQGg=
In-Reply-To: <vdbrc4$1327p$1@solani.org>
X-User-ID: eJwFwYEBwDAEBMCVyj9iHBH2H6F3BhfvoJvT1nZRU6Irh0cf8wK9CYz2XDsflTbPJHY8I7bz8QuyXAsX8QNVbhU9
Bytes: 2252
Lines: 35
I can speed it up, if I use nb_setarg/3 instead
of the explicit duplicate_term/2 and nb_linkarg/3 combo.
The change is as follows:
/* Before */
sys_find2_next(T, X) :-
C = [_|_],
duplicate_term(T, H),
nb_linkarg(1, C, H),
arg(1, X, J),
nb_linkarg(2, J, C),
nb_linkarg(1, X, C)
/* After */
sys_find2_next(T, X) :-
C = [_|_],
nb_setarg(1, C, T),
arg(1, X, J),
nb_linkarg(2, J, C),
nb_linkarg(1, X, C).
Now the timings are better:
/* Before */
?- time(test2).
% 6,007,999 inferences, 0.422 CPU in 0.427
seconds (99% CPU, 14241183 Lips)
true.
/* After */
?- time(test2).
% 5,007,999 inferences, 0.297 CPU in 0.298
seconds (100% CPU, 16869049 Lips)
true.
A wooping more than 100 milliseconds are gone!