[#45637] [ruby-trunk - Feature #6440][Open] 引数にIOを渡した場合のMarshal.loadにバッファを持たせたい — "Glass_saga (Masaki Matsushita)" <glass.saga@...>

14 messages 2012/05/16

[#45670] [ruby-trunk - Bug #6479][Open] ipaddr.rbの受け付ける書式が、プラットフォームによって異なる — "kachick (Kenichi Kamiya)" <kachick1+ruby@...>

9 messages 2012/05/22

[ruby-dev:45664] [ruby-trunk - Feature #6082][Rejected] io_binwrite()内でwritev()を使う

From: "mame (Yusuke Endoh)" <mame@...>
Date: 2012-05-21 15:10:46 UTC
List: ruby-dev #45664
Issue #6082 has been updated by mame (Yusuke Endoh).

Status changed from Feedback to Rejected

あまり意義がなさそうとのことなので、とりあえず閉じます。
同期モードで高速化してほしいユースケースはあるとか、その他何か意見があったら
reopen してください。

-- 
Yusuke Endoh <[email protected]>
----------------------------------------
Feature #6082: io_binwrite()内でwritev()を使う
https://bugs.ruby-lang.org/issues/6082#change-26746

Author: Glass_saga (Masaki Matsushita)
Status: Rejected
Priority: Normal
Assignee: Glass_saga (Masaki Matsushita)
Category: core
Target version: 


io.cのio_binwrite()内で、writev()を用いる事を提案します。

現在のio_binwrite()は、実際にシステムコールを呼ぶ時には渡された文字列がwbufに収まるならばMEMMOVE()で収めてしまってio_fflush()し、
収まらなければfflushした後に再度rb_write_internal()を呼んでいますが、writev()を用いる事でMEMMOVE()の必要がなくなり、
wbufと渡された文字列を結合する事なく一度のシステムコールで書き出す事ができます。
また、wbufと渡された文字列を1度に書き出す事に成功すれば、他のスレッドからのwriteが間に入らないというメリットもあります。

patchを添付します。
test-allを実行したところ、test_keep_alive_EOF(TestNetHTTPKeepAlive)でfailure、test_inspect_nonascii(TestDir_M17N)でerrorとなりますが、
これはtrunkのr34799でも同様なので、このpatchによる問題ではないものと思われます。


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

In This Thread

Prev Next