[pg-cvs] clock-gettime optimization

Attila Lendvai attila.lendvai at gmail.com
Tue May 13 15:46:14 UTC 2008


hi,

please see the attached patch, also pasted at the end of the mail for
convenience.

i'm not sure about the way time-t is defined, maybe someone with more
insight into cffi can approve it or declare it as a hack..

-- 
 attila


diff --git a/posix/basic-unix.lisp b/posix/basic-unix.lisp
index fcc16e7..7c795d3 100644
--- a/posix/basic-unix.lisp
+++ b/posix/basic-unix.lisp
@@ -187,6 +187,9 @@
 (defun time ()
   (%time (null-pointer)))

+(deftype time-t ()
+  `(unsigned-byte ,(* (cffi:foreign-type-size 'time) 8)))
+
 ;;;; sys/stat.h

 (define-c-struct-wrapper stat ())
diff --git a/posix/unix.lisp b/posix/unix.lisp
index 2878286..d91dd90 100644
--- a/posix/unix.lisp
+++ b/posix/unix.lisp
@@ -331,6 +331,9 @@
     (clockid clockid)
     (res     :pointer))

+  (declaim (ftype (function (fixnum) (values time-t (integer 0 999999999)))
+                  clock-getres))
+
   (defun clock-getres (clock-id)
     (with-foreign-object (ts 'timespec)
       (with-foreign-slots ((sec nsec) ts timespec)
@@ -341,8 +344,13 @@
     (clockid clockid)
     (tp      :pointer))

+  (declaim (inline clock-gettime)
+           (ftype (function (fixnum) (values time-t (integer 0 999999999)))
+                  clock-gettime))
+
   (defun clock-gettime (clock-id)
     "Returns the time of the clock CLOCKID."
+    (declare (optimize (speed 3) (safety 2)))
     (with-foreign-object (ts 'timespec)
       (with-foreign-slots ((sec nsec) ts timespec)
         (%clock-gettime clock-id ts)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: osicat-time-speed.diff
Type: text/x-patch
Size: 1255 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/osicat-devel/attachments/20080513/0d7639a7/attachment.bin>


More information about the osicat-devel mailing list