# HG changeset patch # User ellis # Date 1703828744 18000 # Node ID 8259376eee111be50533beba3621fd2e5c78344e # Parent c6d0a37a046a6a7b514fdca47aa60ef98810c489 examples diff -r c6d0a37a046a -r 8259376eee11 examples/db/cl-simple-example.lisp --- a/examples/db/cl-simple-example.lisp Sun Dec 24 19:24:39 2023 -0500 +++ b/examples/db/cl-simple-example.lisp Fri Dec 29 00:45:44 2023 -0500 @@ -36,7 +36,7 @@ (:use :cl :std :cli :rdb :sb-alien :rocksdb) (:export :main)) -(in-package :exmaples/cl-simple-example) +(in-package :examples/cl-simple-example) (declaim (optimize (speed 3))) (defvar *num-cpus* (alien-funcall (extern-alien "sysconf" (function int int)) sb-unix:sc-nprocessors-onln) diff -r c6d0a37a046a -r 8259376eee11 examples/db/mini-redis.lisp --- a/examples/db/mini-redis.lisp Sun Dec 24 19:24:39 2023 -0500 +++ b/examples/db/mini-redis.lisp Fri Dec 29 00:45:44 2023 -0500 @@ -2,14 +2,26 @@ ;; based on https://github.com/no-defun-allowed/concurrent-hash-tables/blob/master/Examples/phony-redis.lisp +;; if the heap gets exhausted you probably want to trying increasing +;; the dynamic-space-size at runtime. + ;;; Code: -(require 'sb-concurrency) (defpackage :examples/mini-redis (:use :cl :std :net :obj :cli :sb-concurrency :sb-thread) - (:export)) + (:export :main)) (in-package :examples/mini-redis) +(defparameter *worker-count* 4) +(defparameter *writer-proportion* 0.5) +(defvar *keys* + (loop for n below 130 by 2 + collect (format nil "~r" n))) +(defvar *other-keys* + (loop for n from 1 below 128 by 2 + collect (format nil "~r" n))) +(defvar *ops* 400000) + (defun make-server () (make-castable :test #'equal)) @@ -26,12 +38,12 @@ (:quit (return)) (:get (multiple-value-bind (val p) - (obj/hash:cgethash (cdr msg) server) + (getchash (cdr msg) server) (if p (send-message rx `(:found ,val)) (send-message rx `(:not-found))))) (:put - (setf (cgethash (cadr msg) server) + (setf (getchash (cadr msg) server) (copy-seq (caddr msg))) (send-message rx '(:ok))) (t (return)))))) @@ -87,16 +99,6 @@ (setf position (mod (1+ position) 100)))) (close-conn conn))) -(defparameter *worker-count* 8) -(defparameter *writer-proportion* 0.5) -(defvar *keys* - (loop for n below 130 by 2 - collect (format nil "~r" n))) -(defvar *other-keys* - (loop for n from 1 below 128 by 2 - collect (format nil "~r" n))) -(defvar *ops* 10000000) - (defun run (&optional (worker-count *worker-count*) (writer-proportion *writer-proportion*) (keys *keys*)) @@ -120,7 +122,8 @@ internal-time-units-per-second))) (throughput (/ (* *ops* worker-count) time))) (format t "~&~20@a: ~$ seconds (~d transactions/second)" - "mini-redis" time (round throughput)))))) + "mini-redis" time (round throughput)))) + server)) (defmain () - (run 4 1.0 *keys*)) + (run)) diff -r c6d0a37a046a -r 8259376eee11 examples/examples.asd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/examples.asd Fri Dec 29 00:45:44 2023 -0500 @@ -0,0 +1,9 @@ +(defsystem :examples + :depends-on (:std :cli :obj :dat :net :rdb) + :components + ((:file "vegadat") + (:module "db" + :components ((:file "cl-simple-example") + (:file "mini-redis") + (:file "tao"))))) + diff -r c6d0a37a046a -r 8259376eee11 examples/vegadat.lisp --- a/examples/vegadat.lisp Sun Dec 24 19:24:39 2023 -0500 +++ b/examples/vegadat.lisp Fri Dec 29 00:45:44 2023 -0500 @@ -3,7 +3,7 @@ (:use :cl :std :net/fetch :dat) (:export :*vega-datasets* :*vega-dataset-base-url* - :fetch-vega-dataset)) + :fetch-vega-datasets :purge-vega-datasets)) (in-package :examples/vegadat) diff -r c6d0a37a046a -r 8259376eee11 system-index.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/system-index.txt Fri Dec 29 00:45:44 2023 -0500 @@ -0,0 +1,2 @@ +demo.asd +examples/examples.asd