Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.prolog > #13960 > unrolled thread
| Started by | Mild Shock <janburse@fastmail.fm> |
|---|---|
| First post | 2024-02-02 20:46 +0100 |
| Last post | 2024-03-06 01:56 +0100 |
| Articles | 2 on this page of 22 — 2 participants |
Back to article view | Back to comp.lang.prolog
Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-02-02 20:46 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-02-02 21:00 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <bursejan@gmail.com> - 2024-02-02 12:50 -0800
Re: Not being a Haskell programmer is trendy! Mild Shock <bursejan@gmail.com> - 2024-02-07 03:25 -0800
Re: Not being a Haskell programmer is trendy! Mild Shock <bursejan@gmail.com> - 2024-02-11 14:34 -0800
Re: Not being a Haskell programmer is trendy! Mild Shock <bursejan@gmail.com> - 2024-02-11 14:39 -0800
Re: Not being a Haskell programmer is trendy! Mild Shock <bursejan@gmail.com> - 2024-02-14 06:45 -0800
Re: Not being a Haskell programmer is trendy! Mild Shock <bursejan@gmail.com> - 2024-02-14 06:53 -0800
Re: Not being a Haskell programmer is trendy! Mild Shock <bursejan@gmail.com> - 2024-02-14 13:29 -0800
Re: Not being a Haskell programmer is trendy! Mild Shock <bursejan@gmail.com> - 2024-02-14 13:33 -0800
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-02-21 01:27 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-02-21 01:28 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-02-21 01:30 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <bursejan@gmail.com> - 2024-02-21 03:43 -0800
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-03-01 17:45 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-03-01 17:47 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-03-01 17:57 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-03-01 18:06 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-03-01 18:08 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-03-01 19:45 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-03-01 21:33 +0100
Re: Not being a Haskell programmer is trendy! Mild Shock <janburse@fastmail.fm> - 2024-03-06 01:56 +0100
Page 2 of 2 — ← Prev page 1 [2]
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2024-03-01 21:33 +0100 |
| Message-ID | <urte2c$qgfe$1@solani.org> |
| In reply to | #14002 |
Lets not forget GNU Prolog. It lacks a little bit behind SWI-Prolog for the first test case: ?- p(X), (between(1,1000000,_),X,fail; true). X = (A is 1+2,_ is A+3) (453 ms) yes ?- (between(1,1000000,_),p(X),X,fail; true). (578 ms) yes Also this kind of testing might be a little bit to generous, by ommiting the time/1 call. Mild Shock schrieb: > A small sanity test. How does formerly Jekejeke Prolog > and Dogelog Player perform. Dogelog Player has not yet > call/N, I do not promote using it, since I am > > still waiting for a good idea to compile it a little > bit more statically. Formerly Jekejeke Prolog uses a > dynamic inline cache, polymorphic in the arity. > > But this test case is anyway less about call/N and > more about call/1 and is/2. I get: > > For formerly Jekejeke Prolog: > > /* Jekejeke Prolog 1.6.6 */ > ?- p(X), time((between(1,1000000,_),X,fail; true)). > % Zeit 540 ms, GC 3 ms, Uhr 01.03.2024 19:37 > X = (_0 is 1+2, _1 is _0+3). > > ?- time((between(1,1000000,_),p(X),X,fail; true)). > % Zeit 867 ms, GC 3 ms, Uhr 01.03.2024 19:37 > true. > > For Dogelog Player: > > /* Dogelog Player 1.1.6 */ > ?- p(X), time((between(1,1000000,_),X,fail; true)). > % Zeit 447 ms, GC 0 ms, Lips 15660199, Uhr 01.03.2024 19:38 > X = (_16030782 is 1+2, _16030783 is _16030782+3). > > ?- time((between(1,1000000,_),p(X),X,fail; true)). > % Zeit 1780 ms, GC 0 ms, Lips 14606802, Uhr 01.03.2024 19:38 > true. > > Jekejeke Prolog and Dogelog Player do not choke > like Scryer Prolog does. The performance of Dogelog > Player is amazing, since call/1 is implemented in > > pure Prolog, not via an interpreter, but via a little > compiler, and an intermediate form, that we anyway use > when we generate cross compiled code or > > static/dynamic clausse. > > Mild Shock schrieb: >> But I cannot retract my claim about Scryer Prolog >> it definitively chokes: >> >> ?- p(X), time((between(1,1000000,_),X,fail; true)). >> % CPU time: 2.233s, 11_000_023 inferences >> X = (_A is 1+2,_B is _A+3). >> >> ?- time((between(1,1000000,_),p(X),X,fail; true)). >> % CPU time: 6.180s, 13_000_045 inferences >> true. >> >> Thats an order slower than Trealla and SWI-Prolog. >> > >
[toc] | [prev] | [next] | [standalone]
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2024-03-06 01:56 +0100 |
| Message-ID | <us8f0r$100qa$1@solani.org> |
| In reply to | #13960 |
In short moment I though I could speed up call/1, by using SWI-Prolog $meta_call/1 semantics, which differs from call/1 semantis: /* SWI-Prolog 9.3.0 */ ?- call((Y=!,(X=1;X=2),Y,X=2)). Y = !, X = 2. ?- '$meta_call'((Y=!,(X=1;X=2),Y,X=2)). false. /* SWI-Prolog 9.3.0 */ ?- call(((X=1;X=2),1,X=2)). ERROR: Type error: `callable' expected, found `(_168=1;_168=2),1,_168=2' (a compound) ?- '$meta_call'(((X=1;X=2),1,X=2)). ERROR: Type error: `callable' expected, found `1' (an integer) One can spare one pass, since body conversion is ommited. Would make call/1 faster. Also intersting find, that I wasn't aware of, namely there is correspondence between: SWI-Prolog Dogelog Player prolog_current_choice/1 '$MARK' prolog_cut_to/1 '$CUT' but the body conversion pass in Dogelog Player, does optimize away unnecessary '$MARK' and $CUT', so maybe the this extra pass isn't useless overhead? Mild Shock schrieb: > Lets not forget GNU Prolog. It lacks a little bit > behind SWI-Prolog for the first test case: > > ?- p(X), (between(1,1000000,_),X,fail; true). > X = (A is 1+2,_ is A+3) > (453 ms) yes > > ?- (between(1,1000000,_),p(X),X,fail; true). > (578 ms) yes > > Also this kind of testing might be a little bit > to generous, by ommiting the time/1 call.
[toc] | [prev] | [standalone]
Page 2 of 2 — ← Prev page 1 [2]
Back to top | Article view | comp.lang.prolog
csiph-web