(c :initarg :c
:type float)))
-(defun run-benchmarks (&key (report-stream *standard-output*) (sexp-report-stream nil) (count 1000))
+(defun run-benchmarks (&key (report-stream *standard-output*) (sexp-report-stream nil) (count 10000))
(let ((specs (read-specs))
(*report-stream* report-stream)
(*sexp-report-stream* sexp-report-stream))
(defun do-benchmarks-for-backend (db-type spec count)
(test-connect-to-database db-type spec)
+ (test-initialise-database)
(write-report-banner "Benchmarks" db-type *report-stream*)
(create-view-from-class 'bench)
(drop-view-from-class 'bench))
(defun benchmark-init ()
- (dotimes (i 100)
+ (dotimes (i 10)
(execute-command "INSERT INTO BENCH (A,B,C) VALUES (123,'A Medium size string',3.14159)")))
(defun benchmark-selects (n)
(time
(dotimes (i n)
(query "SELECT * FROM BENCH" :field-names nil)))
- ))
-
-
-
+ (format *report-stream* "~&~%*** JOINED OBJECT QUERY RETRIEVAL IMMEDIATE ***~%")
+ (time
+ (dotimes (i (truncate n 10))
+ (mapcar #'(lambda (ea) (slot-value ea 'address)) (select 'employee-address :flatp t))))
+ (format *report-stream* "~&~%*** JOINED OBJECT QUERY RETRIEVAL DEFERRED ***~%")
+ (let* ((slotdef (find 'address (clsql-sys::class-slots (find-class 'employee-address))
+ :key #'clsql-sys::slot-definition-name))
+ (dbi (when slotdef (clsql-sys::view-class-slot-db-info slotdef))))
+ (setf (gethash :retrieval dbi) :deferred)
+ (time
+ (dotimes (i (truncate n 10))
+ (mapcar #'(lambda (ea) (slot-value ea 'address)) (select 'employee-address :flatp t))))
+ (setf (gethash :retrieval dbi) :immediate))))