Skip to content

Instantly share code, notes, and snippets.

@jtobin
Last active August 26, 2021 22:17
Show Gist options
  • Save jtobin/4c05c17d5423810ed273ca7f64174af8 to your computer and use it in GitHub Desktop.
Save jtobin/4c05c17d5423810ed273ca7f64174af8 to your computer and use it in GitHub Desktop.
+up benchmarks
:- %say
|= $: *
[ben=?(%put %vip %get %bot %del) ~]
[min=(list (pair @ @)) mit=(pry @ _~) nit=_| ~]
==
:- %noun
:: +up benchmarks
::
=/ pi (up @ _~)
::
=>
|%
++ bench
|_ [in=(list (pair @ @)) pri=(pry @ _~)]
:: put list contents into psq
::
++ put
|- ^- (pry @ _~)
?~ in
pri
$(pri (put:pi pri p.i.in q.i.in ~), in t.in)
:: put high-priority list contents into psq
::
++ vip
|- ^- (pry @ _~)
?~ in
pri
$(pri (vip:pi pri p.i.in q.i.in ~), in t.in)
:: get list contents from psq
::
++ get
=| acc=@
|- ^- @
?~ in
acc
=/ val (get:pi pri p.i.in)
?^ val
$(acc (add acc p.u.val), in t.in)
~& %empty-get-list-input
!!
:: sequentially empty queue via +bot
::
++ bot
|- ^- (pry @ _~)
?~ pri ~
=/ val (bot:pi pri)
?^ val
$(pri s.u.val)
~& %empty-bot-list-input
!!
:: delete list contents from psq
::
++ del
|- ^- (pry @ _~)
?~ in ~
$(pri (del:pi pri p.i.in), in t.in)
--
--
=/ tin=(list (pair @ @))
?^ min min
(turn (gulf 0x1 0xc350) |=(@ [+< +<]))
=/ pit=(pry @ _~)
?^ mit mit
~(put bench tin ~)
?: nit
[tin=tin pit=pit]
^- [tin=_tin pit=_pit]
?- ben
%put
=+ ~(put bench tin ~)
[~ ~]
::
%vip
=+ ~(vip bench tin ~)
[~ ~]
::
%get
=+ ~(get bench tin pit)
[~ ~]
::
%bot
=+ ~(bot bench ~ pit)
[~ ~]
::
%del
=+ ~(del bench tin pit)
[~ ~]
==
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment