山本です。

"U.Nakamura" <usa / garbagecollect.jp> wrote:
(2004/07/19 15:47)

>憶測ですが、SystemRootが C:\WINDOWS でない時にこの問題が発生
>しているように思います。
>私はWinXPを3つ持っているですが、そのうち2つではこの問題が発生
>せず、1つでのみ発生しています。そのマシンのみ、SystemRootが
>C:\WINNT です。
>なんかそのあたりでマヌケなことをしているAPIがあるんじゃないか
>なー、と思うのですが、何が起きてるんですかねえ。

調べてみました。結論から言うと、WinSock 関数が遅くなっているようです。

1. require で呼ばれる file.c(4140) rb_find_file が遅い
2. その file.c(4209) で呼ばれる file_load_ok が遅い
3. その file.c(4080) で呼ばれる fclose が遅い
4. fclose は rb_w32_fclose でオーバーライドされている
5. その win32/win32.c(3219) で呼ばれる is_socket が遅い
6. その win32/win32.c(1639) で呼ばれる getsockopt が遅い

なんか微妙に状況が違うような気もしますが、Cygwin でも問題になった
ことがあるようです。

http://sources.redhat.com/ml/cygwin-apps/2001-05/msg00000.html
http://www.cygwin.com/ml/cygwin-apps/2001-05/msg00025.html

Cygwin では対処ずみなので問題なかったのだと思います。