From c1d680eabc0d9765c9a2bf897bc8590af92df8d6 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 1 Aug 2012 14:31:18 -0700 Subject: [PATCH] unix.time: faster "0 make-timeval". --- basis/unix/time/time-tests.factor | 10 ++++++++++ basis/unix/time/time.factor | 14 ++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 basis/unix/time/time-tests.factor diff --git a/basis/unix/time/time-tests.factor b/basis/unix/time/time-tests.factor new file mode 100644 index 0000000000..c269d27282 --- /dev/null +++ b/basis/unix/time/time-tests.factor @@ -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 diff --git a/basis/unix/time/time.factor b/basis/unix/time/time.factor index ad5a2d6d56..6a63e99dc1 100644 --- a/basis/unix/time/time.factor +++ b/basis/unix/time/time.factor @@ -13,16 +13,14 @@ STRUCT: timespec { nsec long } ; : make-timeval ( us -- timeval ) - 1000000 /mod - timeval - swap >>usec - swap >>sec ; + [ timeval ] dip [ + 1000000 /mod [ >>sec ] [ >>usec ] bi* + ] unless-zero ; : make-timespec ( nanos -- timespec ) - 1000000000 /mod - timespec - swap >>nsec - swap >>sec ; + [ timespec ] dip [ + 1000000000 /mod [ >>sec ] [ >>nsec ] bi* + ] unless-zero ; STRUCT: timezone { tz_minuteswest int }