]> gitweb.factorcode.org Git - factor.git/commitdiff
unix.time: faster "0 make-timeval".
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 1 Aug 2012 21:31:18 +0000 (14:31 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 1 Aug 2012 21:31:18 +0000 (14:31 -0700)
basis/unix/time/time-tests.factor [new file with mode: 0644]
basis/unix/time/time.factor

diff --git a/basis/unix/time/time-tests.factor b/basis/unix/time/time-tests.factor
new file mode 100644 (file)
index 0000000..c269d27
--- /dev/null
@@ -0,0 +1,10 @@
+
+USING: classes.struct tools.test unix.time ;
+
+IN: unix.time
+
+{ S{ timeval f 0 0 } } [ 0 make-timeval ] unit-test
+{ S{ timeval f 1 234567 } } [ 1,234,567 make-timeval ] unit-test
+
+{ S{ timespec f 0 0 } } [ 0 make-timespec ] unit-test
+{ S{ timespec f 1 234567890 } } [ 1,234,567,890 make-timespec ] unit-test
index ad5a2d6d56380e141312957cd4d29759f993a8c8..6a63e99dc13978b86e6ba00586b25c273bde061c 100644 (file)
@@ -13,16 +13,14 @@ STRUCT: timespec
     { nsec long } ;
 
 : make-timeval ( us -- timeval )
-    1000000 /mod
-    timeval <struct>
-        swap >>usec
-        swap >>sec ;
+    [ timeval <struct> ] dip [
+        1000000 /mod [ >>sec ] [ >>usec ] bi*
+    ] unless-zero ;
 
 : make-timespec ( nanos -- timespec )
-    1000000000 /mod
-    timespec <struct>
-        swap >>nsec
-        swap >>sec ;
+    [ timespec <struct> ] dip [
+        1000000000 /mod [ >>sec ] [ >>nsec ] bi*
+    ] unless-zero ;
 
 STRUCT: timezone
     { tz_minuteswest int }