From: Yaroslav K. <kav...@je...> - 2006-06-19 11:07:10
|
Nikodemus Siivola wrote: > I assume you mean this as a jest, surely you're not seriously suggesting > we pun FILETIME into an integer? For what use structure if not use its fields? In win32.lisp FILETIME used only for get-process-times. To do that: (flet ((filetime-to-100-ns (time) (+ (ash (slot time 'dw-high-datetime) 32) (slot time 'dw-low-datetime)))) instead of simply get (unsigned 64)? > My quick benchmarks gave no idication of this being a bottleneck -- > indeed, you need to do quite a few calls to GET-INTERNAL-RUN-TIME in > order to see it move to the next tick. (Actually, we might see how far > we could push the resolution of the value we return, both on Win32 and > elsewhere.) My quick benchmarks: get-process-times1 use FILETIME as structure get-process-times2 use FILETIME as unsigned-long-long CL-USER> (time (dotimes (x 5000000) (multiple-value-bind (res c-time e-time k-time u-time) (get-process-times1) (declare (ignore res c-time e-time k-time u-time))))) Evaluation took: 9.0 seconds of real time 7.203125 seconds of user run time 1.890625 seconds of system run time [Run times include 0.469 seconds GC run time.] 0 page faults and 760,006,936 bytes consed. NIL CL-USER> (time (dotimes (x 5000000) (multiple-value-bind (res c-time e-time k-time u-time) (get-process-times2) (declare (ignore res c-time e-time k-time u-time))))) Evaluation took: 6.0 seconds of real time 3.59375 seconds of user run time 1.765625 seconds of system run time [Run times include 0.156 seconds GC run time.] 0 page faults and 280,002,008 bytes consed. NIL Tics superfluous are not. -- WBR, Yaroslav Kavenchuk. |