2a3b1544c78f

Add profiling infrastructure
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Fri, 05 Aug 2016 15:09:15 +0000
parents e7b1f07365ed
children 6010c396464b
branches/tags (none)
files src/main.lisp

Changes

--- a/src/main.lisp	Fri Aug 05 15:09:09 2016 +0000
+++ b/src/main.lisp	Fri Aug 05 15:09:15 2016 +0000
@@ -527,6 +527,36 @@
         (make-algae x y)))))
 
 
+
+;;;; Profiling
+(require :sb-sprof)
+(sb-sprof::profile-call-counts "SILT")
+(defvar *profiling* nil)
+
+(defun dump-profile ()
+  (with-open-file (*standard-output* "silt.prof"
+                                     :direction :output
+                                     :if-exists :supersede)
+    (sb-sprof:report :type :graph
+                     :sort-by :cumulative-samples
+                     :sort-order :ascending)
+    (sb-sprof:report :type :flat
+                     :min-percent 0.5)))
+
+(defun start-profiling ()
+  (sb-sprof::reset)
+  (sb-sprof::start-profiling :max-samples 50000
+                             :mode :cpu
+                             :sample-interval 0.005
+                             :threads :all)
+  (setf *profiling* t))
+
+(defun stop-profiling ()
+  (setf *profiling* nil)
+  (sb-sprof::stop-profiling)
+  (dump-profile))
+
+
 ;;;; Game State Machine
 (defun render-title ()
   (render
@@ -742,3 +772,5 @@
      (format t "Something went wrong, sorry.~%"))))
 
 ; (run)
+; (start-profiling)
+; (stop-profiling)