From: Tietew Date: 2003-12-15T15:58:14+09:00 Subject: [ruby-dev:22289] mswin32 optimize Tietew です。 [ruby-dev:14592] の話の掘り起こしなのですが,-Og (グローバルな最 適化) を有効にして make test および unit test が通ったので報告し ます。 ただ一カ所 stack_extend がインライン化されてしまう影響で rb_thread_restore_context が無限ループに入ってしまう問題がありま したが __declspec(noinline) (インライン化抑止) で解決しました。 添付のパッチを参考にして下さい。 -Og を有効にすると明らかに速度アップするので是非。 *** ruby test/runner.rb の結果: -O2b2xg- Finished in 479.068 seconds. -O2b2 -GF Finished in 331.707 seconds. P.S. こんな Failure が出たのですが [ruby-dev:22235] block to method by proc の影響? | 1) Failure: | test_hashing(Test::Unit::Util::TC_ProcWrapper) [../ruby-1.8/test/testunit/util/test_procwrapper.rb:25]: | The original and munged procs should not have the same hash. | <49438256> expected to be != to | <49438256>. Index: eval.c =================================================================== RCS file: /src/ruby/eval.c,v retrieving revision 1.602 diff -p -u -2 -r1.602 eval.c --- eval.c 11 Dec 2003 21:06:14 -0000 1.602 +++ eval.c 15 Dec 2003 05:45:38 -0000 @@ -8447,5 +8447,9 @@ rb_thread_switch(n) NORETURN(static void rb_thread_restore_context _((rb_thread_t,int))); +NORETURN(static void stack_extend _((rb_thread_t,int))); +#ifdef _MSC_VER +__declspec(noinline) /* prevent from global optimization */ +#endif static void stack_extend(th, exit) Index: win32/Makefile.sub =================================================================== RCS file: /src/ruby/win32/Makefile.sub,v retrieving revision 1.57 diff -p -u -2 -r1.57 Makefile.sub --- win32/Makefile.sub 1 Dec 2003 00:30:37 -0000 1.57 +++ win32/Makefile.sub 15 Dec 2003 05:45:39 -0000 @@ -65,8 +65,10 @@ DEBUGFLAGS = -Zi !endif !if !defined(OPTFLAGS) -OPTFLAGS = -O2b2xg- +OPTFLAGS = -O2b2 -GF !endif +!if !defined(OS) || !defined(RT) OS = mswin32 RT = msvcrt +!endif !ifndef RUBY_SO_NAME @@ -109,5 +111,5 @@ LD = $(CC) LDSHARED = $(LD) -LD XCFLAGS = -DRUBY_EXPORT -LDFLAGS = -link -incremental:no -pdb:none +LDFLAGS = -link -incremental:no -debug -opt:ref -opt:icf -map DLDFLAGS = $(LDFLAGS) -dll XLDFLAGS = -stack:$(STACK) —[ Tietew ]—————————————————————————— メ : tietew@tietew.net / tietew@raug.net / tietew@masuclub.net ホペ: http://www.tietew.net/ Tietew Windows Lab. http://www.masuclub.net/ 鱒倶楽部 指紋: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA