[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