[ANN] 1.9.3-p0 proof-of-concept available for testing

5 views
Skip to first unread message

Jon

unread,
Nov 2, 2011, 4:16:44 PM11/2/11
to theco...@googlegroups.com
An optimized 1.9.3-p0 Frakenruby freshly built and now available for download and testing from https://github.com/thecodeshop/ruby/downloads

The purpose of this proof-of-concept is to see if we're on the right track for fixing MRI's 1.9.x performance regressions on Windows. Currently we believe three areas are ripe for improvement: `require` behavior, api selection, and IO/Encoding optimizations. This download implements initial source code modifications for all three categories.

Potentially the most problematic is that we've set the default IO mode to O_BINARY. Problematic because it is likely to cause problems when interacting with "\r\n" delimited files. As such, this is not really "the fix" and simply allow us to see how optimizations in the IO subsection *might* work to solve the dramatic slowdown benchmarked and discussed in these two posts:

http://groups.google.com/group/thecodeshop/browse_thread/thread/f283169207f3ce25
http://groups.google.com/group/thecodeshop/browse_thread/thread/47693a8c557543f6

Caveat emptor.

With that in mind, strap on a helmet and test in a variety of Windows environments (XP SP3 or higher). We'd like to hear what works and what breaks. We'd especially like to hear how it performs and whether it's noticably faster for you.

Specifically, we're interested in feedback from the following areas:

* Rails
* BDD/TDD (cucumber, rspec, minitest)
* GUI (gtk2 and tcl/tk)
* XML and other file/data munging apps


A few console shots:

C:\>ruby -ve "puts 'Hello Windows! Am I faster but still usable?'"
tcs-ruby 1.9.3p0 (2011-10-30 revision 33569) [i386-mingw32]
Hello Windows! Am I faster but still usable?

C:\>pik ls
165: jruby 1.6.5 (ruby-1.8.7-p330) (2011-10-25 9dcd388) (Java HotSpot(TM) Client VM...
187: ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
192: ruby 1.9.2p290 (2011-07-09) [i386-mingw32]
193: ruby 1.9.3dev (2011-10-11 revision 33457) [i386-mingw32]
193: ruby 1.9.3p0 (2011-10-30 revision 33569) [i386-mingw32]
* 193: tcs-ruby 1.9.3p0 (2011-10-30 revision 33569) [i386-mingw32]
200: ruby 2.0.0dev (2011-11-02 trunk 33613) [i386-mingw32]

C:\>gem install redcarpet gtk2
Fetching: redcarpet-1.17.2.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
Successfully installed redcarpet-1.17.2
Fetching: pkg-config-1.1.2.gem (100%)
Fetching: glib2-1.0.3-x86-mingw32.gem (100%)
Fetching: atk-1.0.3-x86-mingw32.gem (100%)
Fetching: cairo-1.10.1-x86-mingw32.gem (100%)
Fetching: pango-1.0.3-x86-mingw32.gem (100%)
Fetching: gdk_pixbuf2-1.0.3-x86-mingw32.gem (100%)
Fetching: gtk2-1.0.3-x86-mingw32.gem (100%)
Successfully installed pkg-config-1.1.2
Successfully installed glib2-1.0.3-x86-mingw32
Successfully installed atk-1.0.3-x86-mingw32
Successfully installed cairo-1.10.1-x86-mingw32
Successfully installed pango-1.0.3-x86-mingw32
Successfully installed gdk_pixbuf2-1.0.3-x86-mingw32
Successfully installed gtk2-1.0.3-x86-mingw32
8 gems installed


Build and optimization summary:

* Built via RubyInstaller recipes using TDM GCC 4.5.2 DevKit
* Uses MRI's `ruby_1_9_3` source branch with these patches:
* Dušan's `dmajkic/ruby_1_9_3` branch containing:
* faster winnt_stat and O_BINARY as default
* Yura's `load.c` patch for sorted $LOADED_FEATURES
* Tweaked `version.h` to ease usage with pik
* RUBY_DESCRIPTION add "tcs" to allow `pik 193 tcs` to switch


Thanks,

Jon

---
http://thecodeshop.github.com | http://jonforums.github.com/
twitter: @jonforums

Reply all
Reply to author
Forward
0 new messages