[#40602] [ruby-trunk - Bug #5532][Open] Compile problem for bigdecimal on cygwin — Martin Dürst <duerst@...>

14 messages 2011/11/01

[#40617] [ruby-trunk - Feature #5534][Open] Redefine Range class and introduce RelativeNumeric and RelativeRange — Alexey Muranov <muranov@...>

17 messages 2011/11/01

[#40646] [ruby-trunk - Bug #5541][Open] Better configure error message when llvm-gcc is the default compiler — Eric Hodel <drbrain@...7.net>

10 messages 2011/11/01

[#40648] [ruby-trunk - Feature #5543][Open] rb_thread_blocking_region() API is poorly designed — Christopher Huff <cjameshuff@...>

14 messages 2011/11/01

[#40684] [ruby-trunk - Feature #5555][Open] rename #include? to #includes? — Alexey Muranov <muranov@...>

20 messages 2011/11/02

[#40688] [ruby-trunk - Bug #5556][Open] SIGHUP no longer ignored when sent to process group from a subprocess — Brian Ford <brixen@...>

12 messages 2011/11/02

[#40706] [ruby-trunk - Feature #5562][Open] Improvement of Windows IO performance — Hiroshi Shirosaki <h.shirosaki@...>

39 messages 2011/11/03

[#40737] [ruby-trunk - Bug #5570][Open] Encoding of environment variables on Windows — Nikolai Weibull <now@...>

11 messages 2011/11/04

[#40748] Proposal for sustainable branch maintenance — "Yuki Sonoda (Yugui)" <yugui@...>

-----BEGIN PGP SIGNED MESSAGE-----

14 messages 2011/11/05

[#40770] [ruby-trunk - Feature #5578][Open] Embedded YAML for Ruby 2.0 — Thomas Sawyer <transfire@...>

17 messages 2011/11/06

[#40806] [ruby-trunk - Feature #5583][Open] Optionally typing — Yasushi ANDO <andyjpn@...>

21 messages 2011/11/07

[#40824] [ruby-trunk - Feature #5588][Open] add negation flag (v) to Regexp — Suraj Kurapati <sunaku@...>

38 messages 2011/11/08

[#40865] IO.copy_stream creates files with restrictive permissions — Eric Wong <normalperson@...>

I'm not sure if this is a bug or intended as spec.

16 messages 2011/11/09
[#41151] Re: IO.copy_stream creates files with restrictive permissions — Tanaka Akira <akr@...> 2011/11/19

2011/11/9 Eric Wong <normalperson@yhbt.net>:

[#41166] Re: IO.copy_stream creates files with restrictive permissions — KOSAKI Motohiro <kosaki.motohiro@...> 2011/11/20

>> I noticed when a file name argument is passed to the IO.copy_stream, the

[#41168] Re: IO.copy_stream creates files with restrictive permissions — Clifford Heath <clifford.heath@...> 2011/11/20

On 20/11/2011, at 5:09 PM, KOSAKI Motohiro wrote:

[#41176] Re: IO.copy_stream creates files with restrictive permissions — Tanaka Akira <akr@...> 2011/11/21

2011/11/20 Clifford Heath <clifford.heath@gmail.com>:

[#41180] Re: IO.copy_stream creates files with restrictive permissions — KOSAKI Motohiro <kosaki.motohiro@...> 2011/11/21

>> I think documentation is the wrong answer. The security defects are not caused

[#40908] [ruby-trunk - Feature #5607][Open] Inconsistent reaction in Range of String — Yen-Nan Lin <redmine@...>

15 messages 2011/11/10

[#40941] [ruby-trunk - Feature #5617][Open] Allow install RubyGems into dediceted directory — Vit Ondruch <v.ondruch@...>

22 messages 2011/11/11

[#40951] [Backport93 - Backport #5621][Open] Please backport thread-safe autoloading patch — Mike Perham <mperham@...>

25 messages 2011/11/12
[#40971] [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Mike Perham <mperham@...> 2011/11/12

[#40972] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Yehuda Katz <wycats@...> 2011/11/12

Unfortunately ruby-head has a deadlock in one of my go-to scenarios for

[#40976] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Hiroshi Nakamura <nahi@...> 2011/11/13

-----BEGIN PGP SIGNED MESSAGE-----

[#41128] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Charles Oliver Nutter <headius@...> 2011/11/18

On Sat, Nov 12, 2011 at 7:24 PM, Hiroshi Nakamura <nahi@ruby-lang.org> wrote:

[#41129] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Hiroshi Nakamura <nahi@...> 2011/11/18

-----BEGIN PGP SIGNED MESSAGE-----

[#41142] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Charles Oliver Nutter <headius@...> 2011/11/18

On Fri, Nov 18, 2011 at 12:15 AM, Hiroshi Nakamura <nahi@ruby-lang.org> wrote:

[#40982] [ruby-trunk - Bug #5625][Open] Remove profanity and pejoratives — Andrew Grimm <andrew.j.grimm@...>

30 messages 2011/11/13

[#41004] [ruby-trunk - Feature #5628][Open] Module#basename — Thomas Sawyer <transfire@...>

18 messages 2011/11/14

[#41024] [ruby-trunk - Feature #5632][Open] Attempt to open included class shades it instead. — Boris Stitnicky <boris@...>

12 messages 2011/11/14

[#41025] Proposal to add new methods: positive? negative? natural? — JosFrancisco Calvo Moreno <josefranciscocalvo@...>

Hi all!

11 messages 2011/11/14
[#41027] Re: Proposal to add new methods: positive? negative? natural? — Jeremy Evans <code@...> 2011/11/14

On 11/15 12:58, Jos? Francisco Calvo Moreno wrote:

[#41031] Re: Proposal to add new methods: positive? negative? natural? — JosFrancisco Calvo Moreno <josefranciscocalvo@...> 2011/11/14

Hi Jeremy,

[#41038] [ruby-trunk - Bug #5634][Open] yield and binding — Thomas Sawyer <transfire@...>

17 messages 2011/11/14

[#41086] [ruby-trunk - Feature #5644][Open] add Enumerable#exclude? antonym — Suraj Kurapati <sunaku@...>

14 messages 2011/11/17

[#41175] [ruby-trunk - Feature #5654][Open] Introduce global lock to avoid concurrent require — Hiroshi Nakamura <nakahiro@...>

12 messages 2011/11/21

[#41200] [ruby-trunk - Bug #5659][Open] bug releasing a gem created with rails 3.1 — Vinicius Gati <viniciusgati@...>

14 messages 2011/11/22

[#41212] [ruby-trunk - Feature #5662][Open] inject-accumulate, or Haskell's mapAccum* — Edvard Majakari <edvard.majakari@...>

12 messages 2011/11/22

[#41213] [ruby-trunk - Bug #5663][Open] Combined map/select method — Yehuda Katz <wycats@...>

62 messages 2011/11/22

[#41317] [ruby-trunk - Bug #5676][Open] miniruby linking error: undefined reference to ___stack_chk_guard — Martin Dürst <duerst@...>

10 messages 2011/11/27

[#41404] [ruby-trunk - Bug #5690][Open] Module#qualified_const_get — Yehuda Katz <wycats@...>

31 messages 2011/11/30

[ruby-core:40917] [ruby-trunk - Feature #5562] Improvement of Windows IO performance

From: Luis Lavena <luislavena@...>
Date: 2011-11-10 19:16:35 UTC
List: ruby-core #40917
Issue #5562 has been updated by Luis Lavena.

Category set to core
Assignee set to Usaku NAKAMURA

Hiroshi Shirosaki wrote:
> I'm not sure how to do with test-all. mingw ruby seems not to pass all tests.

That is correct, if you add skip to the following two:

TestRequire#test_require_invalid_shared_object
TestRubyOptions#test_segv_test

make test-all will complete

> Anyway I tried to make test-all.
> If ruby-core committers like this result, I hope this patch merged to trunk.
> 
> I have modified a patch to trunk. Previous patch conflicts with trunk. I have resolved and added minor fixes.
> 
> make test-all result become better.
> 

The following is the list of tests that fails (using RubyInstaller's base) trunk versus your patch:

trunk:
TestArgf#test_textmode
TestDir_M17N#test_filename_bytes_euc_jp
TestDir_M17N#test_filename_euc_jp
TestDir_M17N#test_filename_ext_euc_jp_and_int_utf_8
TestDir_M17N#test_filename_extutf8
TestDir_M17N#test_filename_extutf8_inteucjp_representable
TestDir_M17N#test_filename_extutf8_inteucjp_unrepresentable
TestDir_M17N#test_filename_utf8_raw_name
TestGDBM#test_reorganize
TestGDBM#test_s_open_create_new
TestGDBM#test_s_open_error
TestGemInstaller#test_generate_bin_bindir_with_user_install_warning
TestRDocMarkupPreProcess#test_include_file
TestRDocMarkupPreProcess#test_include_file_encoding_incompatible
TestRubyOptions#test_encoding
TestUnicodeEscape#test_basic
TestWEBrickCGI#test_cgi
TestWin32OLE#test_s_codepage_changed


Versus your patch:
TestDir_M17N#test_filename_bytes_euc_jp
TestDir_M17N#test_filename_euc_jp
TestDir_M17N#test_filename_ext_euc_jp_and_int_utf_8
TestDir_M17N#test_filename_extutf8
TestDir_M17N#test_filename_extutf8_inteucjp_representable
TestDir_M17N#test_filename_extutf8_inteucjp_unrepresentable
TestDir_M17N#test_filename_utf8_raw_name
TestGDBM#test_reorganize
TestGDBM#test_s_open_create_new
TestGDBM#test_s_open_error
TestGemInstaller#test_generate_bin_bindir_with_user_install_warning
TestOpen3#test_capture3_flip
TestRDocMarkupPreProcess#test_include_file
TestRDocMarkupPreProcess#test_include_file_encoding_incompatible
TestRubyOptions#test_encoding
TestUnicodeEscape#test_basic
TestWEBrickCGI#test_cgi
TestWin32OLE#test_s_codepage_changed

===

In your patch TestArgf#test_textmode no longer fails, but TestOpen3#test_capture3_flip does.

trunk:

10347 tests, 1884751 assertions, 9 failures, 9 errors, 95 skips

your patch:

10347 tests, 1884748 assertions, 8 failures, 10 errors, 95 skips

===

It is worth to mention that write performance using your test script did improve:

V:\>ruby -v t.rb
ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
"0 0.598029"
"1 0.300001"
"2 0.2"

ruby 1.9.2p290 (2011-07-09) [i386-mingw32]
"0 0.413023"
"1 0.746043"
"2 0.935052"

ruby 1.9.3p0 (2011-10-30) [i386-mingw32]
"0 0.400014"
"1 0.721023"
"2 0.918049"

V:\>ruby -v t.rb
ruby 2.0.0dev (2011-11-10 trunk 33700) [i386-mingw32]
"0 0.396023"
"1 0.725817"
"2 0.936044"

*with patch*
V:\>ruby -v t.rb
ruby 2.0.0dev (2011-11-10 trunk 33700) [i386-mingw32]
"0 0.401023"
"1 0.238013"
"2 0.139008"

I'm assigning this to Usaku Nakamura for comments.

Thank you.
----------------------------------------
Feature #5562: Improvement of Windows IO performance
http://redmine.ruby-lang.org/issues/5562

Author: Hiroshi Shirosaki
Status: Open
Priority: Normal
Assignee: Usaku NAKAMURA
Category: core
Target version: 


=begin
I suggest a patch to improve Windows IO performance.

Ruby's text mode IO is much slower than binary mode.
On Windows text mode is default, so Windows IO is slow.
I assume that's mainly because of CRLF linefeed code conversion.

My idea to improve IO performance is as below.
- Change default linefeed conversion from Universal newline to CRLF newline on Windows
- Use binary mode process with OS's text mode if only CRLF conversion is needed
- Use Ruby's text mode with universal newline conversion if encoding conversion is needed

Although that causes io.c code to be more complicated, IO with CRLF conversion performance seems to be improved much.
I confirmed "make test-all TEST=ruby" have been passed. There was 3 errors, but ruby without this patch had same errors.
I think this patch doesn't affect other OS.

Line endings of "p" or "puts" writing is LF on trunk, but CRLF on 1.8.7 or 1.9.2.
This patch reverts to CRLF.


Here is #1332 benchmark test and results.

time = [Time.new]
c = ''
'aaaa'.upto('zzzz') {|e| c << e}
4.times { c << c }
time << Time.new
File.open('out.file','w') { |f| f.write(c) }
time << Time.new
c = File.open('out.file','r') { |f| f.read }
time << Time.new
0.upto(time.size - 2) {|i| p "#{i} #{time[i+1]-time[i]}" }


- Result

ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
"0 0.78125"
"1 0.6875"
"2 0.5625"

ruby 2.0.0dev (2011-11-03) [i386-mingw32]
"0 0.59375"
"1 1.09375"
"2 1.296875"

ruby 2.0.0dev (2011-11-03 trunk 33615) [i386-mingw32] with this patch
"0 0.625"
"1 0.65625"
"2 0.34375"
=end



-- 
http://redmine.ruby-lang.org

In This Thread