Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.prolog > #14801

SWI-Prolog needs linear time (Was: Frozen Prolog Terms make copy_term/2 constant)

From Mild Shock <janburse@fastmail.fm>
Newsgroups comp.lang.prolog
Subject SWI-Prolog needs linear time (Was: Frozen Prolog Terms make copy_term/2 constant)
Date 2025-08-21 03:30 +0200
Message-ID <1085src$brmu$2@solani.org> (permalink)
References <107vi9k$7t1e$1@solani.org> <1085sot$brmu$1@solani.org>

Show all headers | View raw


Hi,

I get for SWI-Prolog WASM, that copy is faster
than knowledge base fact access:

/* SWI-Prolog WASM, copy_term/2 testing */
?- test2(10).
(645.4ms)

?- test2(30).
(1056.5ms)

?- test2(90).
(2245.2ms)

For example copying the 90 element list takes
only 2245.2ms while acccessing the 90 element
list from facts takes 5372.3ms, see previous post.

But the copy_term/2 is nevertheless linear.

Bye

Mild Shock schrieb:
> Hi,
> 
> Frozen Prolog terms don’t need to be traversed to know
> whether they are ground. They have a GC mask information
> that shows that they are program shared (PS) ground Prolog
> 
> terms, so that copy can immediately return. One can modify
> the testing slightly, going from this here in frozen.pl:
> 
> test(N) :- between(1,1000,_), data(N,_), fail.
> test(_).
> 
> test2(N) :- between(1,1000,_), test(N), fail.
> test2(_).
> 
> To this here, unfortunately copy_term/2 not available in WebPL:
> 
> test(X) :- between(1,1000,_), copy_term(X,_), fail.
> test(_).
> 
> test2(N) :- data(N,X), between(1,1000,_), test(X), fail.
> test2(_).
> 
> So basically departing from testing whether a first access
> to a program sharing structure is fast, into testing
> whether copy_term/2 has some smarts to detect
> 
> program sharing structures.
> 
> Bye
> 
> Mild Shock schrieb:
>> Hi,
>>
>> J Strother Moore II is the Original Gangster (OG)
>> of program sharng. Interestingly structure sharing
>> meant always program sharing in the theorem
>>
>> proving community back then:
>>
>> COMPUTATIONAL LOGIC: STRUCTURE SHARING AND
>> PROOF OF PROGRAM PROPERTIES
>> J Strother Moore II - 1973
>> https://era.ed.ac.uk/bitstream/handle/1842/2245/Moore-Thesis-1973-OCR.pdf
>>
>> Only the WAM community managed to intsitutionalize
>> the term structure sharng, as a reduced form of
>> program sharing, namely goal argument sharing
>>
>> not using pairs of two pointers with skeleton and binding
>> environment anymore, to indentify a Prolog term,
>> but simple single pointers for a Prolog term.
>>
>> Bye
>>
> 

Back to comp.lang.prolog | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

The roots Program Sharing (PS): J Strother Moore II (1973) Mild Shock <janburse@fastmail.fm> - 2025-08-18 17:53 +0200
  Avoiding OCCUR Checks / The BAROQUE Language (Was: The roots Program Sharing (PS): J Strother Moore II (1973)) Mild Shock <janburse@fastmail.fm> - 2025-08-18 18:00 +0200
  Frozen Prolog Terms make copy_term/2 constant (Was: The roots Program Sharing (PS): J Strother Moore II (1973) Mild Shock <janburse@fastmail.fm> - 2025-08-21 03:29 +0200
    SWI-Prolog needs linear time (Was: Frozen Prolog Terms make copy_term/2 constant) Mild Shock <janburse@fastmail.fm> - 2025-08-21 03:30 +0200
      Old Lady with Double Pointers and Frozen Info (Was: SWI-Prolog needs linear time) Mild Shock <janburse@fastmail.fm> - 2025-08-21 03:31 +0200

csiph-web