[#12387] reducing logical operation — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

17 messages 2001/03/07
[#12388] Re: reducing logical operation — EGUCHI Osamu <eguchi@...> 2001/03/07

えぐち@エスアンドイー です。

[#12389] Re: reducing logical operation — nobu.nakada@... 2001/03/07

なかだです。

[#12391] Re: reducing logical operation — EGUCHI Osamu <eguchi@...> 2001/03/07

えぐち@エスアンドイー です。

[#12404] fork in threads — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

14 messages 2001/03/09

[#12405] at_exit — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 2001/03/09
[#12409] Re: at_exit — matz@... (Yukihiro Matsumoto) 2001/03/10

まつもと ゆきひろです

[#12411] Re: at_exit — keiju@... (石塚圭樹) 2001/03/10

けいじゅ@日本ラショナルソフトウェアです.

[#12425] bignum % の結果が負数になることがある — Hisayasu Nakao <h-nakao@...>

最近、ruby-1.6.2を使い出したばかりの中尾です。

39 messages 2001/03/12
[#12427] Re: bignum % の結果が負数になることがある — WATANABE Hirofumi <eban@...> 2001/03/12

わたなべです。

[#12463] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/13

In message <4518-Mon12Mar2001145434+0900-eban@os.rim.or.jp>

[#12464] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/13

まつもと ゆきひろです

[#12466] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/13

In message <984469222.234203.1007.nullmailer@ev.netlab.zetabits.com>

[#12475] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12476] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984550885.417146.3670.nullmailer@ev.netlab.zetabits.com>

[#12480] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12481] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984553493.009507.3747.nullmailer@ev.netlab.zetabits.com>

[#12488] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12493] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984579430.080967.5569.nullmailer@ev.netlab.zetabits.com>

[#12578] require 'win32api' — Kazuhiro NISHIYAMA <zn@...>

require 'win32api'のエラーメッセージがわかりにくいと

21 messages 2001/03/20
[#12579] Re: require 'win32api' — nobu.nakada@... 2001/03/20

なかだです。

[#12598] Re: require 'win32api' — nobu.nakada@... 2001/03/21

なかだです。

[#12582] finalizer problem — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

20 messages 2001/03/20
[#12583] Re: finalizer problem — matz@... (Yukihiro Matsumoto) 2001/03/20

まつもと ゆきひろです

[#12585] Re: finalizer problem — keiju@... (石塚圭樹) 2001/03/20

けいじゅ@日本ラショナルソフトウェアです.

[#12591] Re: finalizer problem — matz@... (Yukihiro Matsumoto) 2001/03/20

まつもと ゆきひろです

[#12619] Re: finalizer problem — keiju@... (石塚圭樹) 2001/03/22

けいじゅ@日本ラショナルソフトウェアです.

[#12605] extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...>

渡辺哲也です。

17 messages 2001/03/22
[#12606] Re: extern inline (ruby.h) ruby-1.6.3 — matz@... (Yukihiro Matsumoto) 2001/03/22

まつもと ゆきひろです

[#12607] Re: extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...> 2001/03/22

渡辺哲也です。

[#12608] Re: extern inline (ruby.h) ruby-1.6.3 — matz@... (Yukihiro Matsumoto) 2001/03/22

まつもと ゆきひろです

[#12674] Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp>

21 messages 2001/03/25
[#12675] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/26

まつもと ゆきひろです

[#12678] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/26

[#12681] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/26

まつもと ゆきひろです

[#12687] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/27

[#12688] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/28

まつもと ゆきひろです

[#12710] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/31

[ruby-dev:12354] re: higher-resolution Time for Win32

From: matz@... (Yukihiro Matsumoto)
Date: 2001-03-05 05:50:56 UTC
List: ruby-dev #12354
まつもと ゆきひろです

ruby-talkからこちらに振ります。

要するに今のgettimeofdayは精度が悪すぎってことのようです。
このパッチを参考にwin32/win32.cの実装を書き換えればよいって
ことでしょうか?

------- Start of forwarded message -------
From: Tim Thompson <tjt@nosuch.com>
Subject: [ruby-talk:11990] higher-resolution Time for Win32
To: ruby-talk@ruby-lang.org (ruby-talk ML)

I want to use Ruby for realtime MIDI and audio on Windows.
To do that, I need high-resolution timing.  The existing C code
in Ruby uses gettimeofday() to get the current time.
I have made a modification so that, on Windows, it uses the
timeGetTime() API to get a higher-resolution time.

Before this change, Ruby's Time.now.tv_usec value on Windows 98
was quantized to a large (40-50 millisecond) amount, because
of the poor implementation of gettimeofday() in Windows.

After this change, Ruby's Time.now.tv_usec value on Windows 98
has millisecond-resolution (i.e. the resolution of
the timeGetTime() API).

I've tried to make a minimal (but complete) change,
by added a rb_gettimeofday() function that all code uses
instead of gettimeofday().  The winmm.lib library needs
to be added to the makefile as well.   A 'diff -u' for 1.6.2
is enclosed at the end of this message.

I've tested the change on both Win98 and Linux.

Any chance this change can be made in the official distribution?

    ...Tim Thompson...tjt@nosuch.com...

================================================================

- --- win32/Makefile.sub.original	Sun Mar  4 20:27:04 2001
+++ win32/Makefile.sub	Sun Mar  4 20:33:31 2001
@@ -35,7 +35,7 @@
 LDFLAGS = $(CFLAGS) -Fm
 XLDFLAGS = 
 #EXTLIBS = 
- -LIBS = user32.lib advapi32.lib wsock32.lib $(EXTLIBS)
+LIBS = user32.lib advapi32.lib wsock32.lib $(EXTLIBS) winmm.lib
 MISSING = crypt.obj alloca.obj win32.obj isinf.obj isnan.obj
 LDSHARED = 
 DLDFLAGS = 


- --- eval.c.original	Sun Mar  4 20:26:44 2001
+++ eval.c	Sun Mar  4 20:03:09 2001
@@ -6771,7 +6771,7 @@
 timeofday()
 {
     struct timeval tv;
-    gettimeofday(&tv, NULL);
+    rb_gettimeofday(&tv);
     return (double)tv.tv_sec + (double)tv.tv_usec * 1e-6;
 }
 

--- random.c.original	Sun Mar  4 20:27:15 2001
+++ random.c	Sun Mar  4 20:03:25 2001
@@ -119,7 +119,7 @@
 	static int n = 0;
 	struct timeval tv;
 
-	gettimeofday(&tv, 0);
+	rb_gettimeofday(&tv);
 	seed = tv.tv_sec ^ tv.tv_usec ^ getpid() ^ n++;
     }
     else {
@@ -143,7 +143,7 @@
     if (first) {
 	struct timeval tv;
 
-	gettimeofday(&tv, 0);
+	rb_gettimeofday(&tv);
 	rand_init(tv.tv_sec ^ tv.tv_usec ^ getpid());
     }
     switch (TYPE(vmax)) {


--- time.c.original	Sun Mar  4 20:27:31 2001
+++ time.c	Sun Mar  4 21:10:12 2001
@@ -26,6 +26,10 @@
 #endif
 #endif /* NT */
 
+#ifdef NT
+#include <mmsystem.h>
+#endif
+
 #ifdef HAVE_SYS_TIMES_H
 #include <sys/times.h>
 #endif
@@ -50,6 +54,31 @@
     Data_Get_Struct(obj, struct time_object, tobj);\
 }
 
+int
+rb_gettimeofday(struct timeval *tvp)
+{
+#ifdef NT
+    static int initialized = 0;
+    static struct timeval tv0;
+    static long tm0;
+    long dt;
+
+    if ( ! initialized ) {
+	initialized = 1;
+	tm0 = timeGetTime();
+	if ( gettimeofday(&tv0, 0) < 0 )
+	    return -1;
+    }
+    dt = timeGetTime() - tm0;
+    *tvp = tv0;
+    tvp->tv_sec += dt / 1000;
+    tvp->tv_usec += 1000 * (dt % 1000);
+    return 0;
+#else
+    return gettimeofday(tvp, 0);
+#endif	/* NT */
+}
+
 static VALUE
 time_s_now(klass)
     VALUE klass;
@@ -60,7 +89,7 @@
     obj = Data_Make_Struct(klass, struct time_object, 0, free, tobj);
     tobj->tm_got=0;
 
-    if (gettimeofday(&tobj->tv, 0) < 0) {
+    if (rb_gettimeofday(&tobj->tv) < 0) {
 	rb_sys_fail("gettimeofday");
     }
 
@@ -294,7 +323,7 @@
     struct tm *tm;
     long t, diff;
 
-    if (gettimeofday(&tv, 0) < 0) {
+    if (rb_gettimeofday(&tv) < 0) {
 	rb_sys_fail("gettimeofday");
     }
     guess = tv.tv_sec;

================================================================
------- End of forwarded message -------

In This Thread

Prev Next