[#45341] 非同期割り込みに対する対処案(日本語版) — SASADA Koichi <ko1@...>

 ささだです.

28 messages 2012/03/11
[#45816] Re: 非同期割り込みに対する対処案(日本語版) — SASADA Koichi <ko1@...> 2012/06/25

 ささだです.

[#45817] Re: 非同期割り込みに対する対処案(日本語版) — Tanaka Akira <akr@...> 2012/06/25

2012年6月25日 18:26 SASADA Koichi <ko1@atdot.net>:

[#45819] Re: 非同期割り込みに対する対処案(日本語版) — SASADA Koichi <ko1@...> 2012/06/25

 ささだです.

[#45820] Re: 非同期割り込みに対する対処案(日本語版) — Tanaka Akira <akr@...> 2012/06/25

2012年6月25日 19:39 SASADA Koichi <ko1@atdot.net>:

[#45827] Re: 非同期割り込みに対する対処案(日本語版) — SASADA Koichi <ko1@...> 2012/06/25

(2012/06/25 20:32), Tanaka Akira wrote:

[#45841] Re: 非同期割り込みに対する対処案(日本語版) — Tanaka Akira <akr@...> 2012/06/25

2012年6月26日 3:40 SASADA Koichi <ko1@atdot.net>:

[#45372] Marshal.dumpにおけるインスタンス変数の取り扱いについて — keiju@... (Keiju ISHITSUKA)

けいじゅ@いしつかです.

14 messages 2012/03/16
[#45376] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて — Yukihiro Matsumoto <matz@...> 2012/03/17

まつもと ゆきひろです

[#45377] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて — keiju@... (石塚圭樹) 2012/03/17

けいじゅ@いしつかです.

[#45381] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて — Yukihiro Matsumoto <matz@...> 2012/03/17

まつもと ゆきひろです

[#45399] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて — keiju@... (石塚圭樹) 2012/03/18

けいじゅ@いしつかです.

[#45412] [ruby-trunk - Feature #6177][Open] array.cのrb_ary_equal()の高速化 — "Glass_saga (Masaki Matsushita)" <glass.saga@...>

13 messages 2012/03/20

[#45471] [ruby-trunk - Bug #6230][Open] [WEBrick] WEBrick::HTTPResponse#body の IO オブジェクトの読み込みに read メソッドを使っているため必要以上にブロックされる — "nobuoka (yu nobuoka)" <nobuoka@...>

7 messages 2012/03/30

[ruby-dev:45467] [ruby-trunk - Feature #6218][Assigned] struct.cのrb_struct_s_members_m()について

From: "mame (Yusuke Endoh)" <mame@...>
Date: 2012-03-29 23:45:34 UTC
List: ruby-dev #45467
Issue #6218 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to Glass_saga (Masaki Matsushita)

なんで今そういう無駄なコードになっているか、というのを調べるといいです。
ひょっとしたら何か意味があるのかもしれないので。

この場合 r10847 を見ると、Struct#members が文字列からシンボルを返すように
変更したことで、こういうコードになったようです。
なので、昔は意味があったけれど今は本当にただの無駄だと思われます。

コミット権もらえたらやっといてください。

-- 
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Feature #6218: struct.cのrb_struct_s_members_m()について
https://bugs.ruby-lang.org/issues/6218#change-25427

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


表題の関数ではrb_struct_s_members()で得たArrayの内容をwhile文で1要素ずつ新たなArrayにpushしていますが、
これはrb_ary_dup()で済ませられるのではないでしょうか。

パフォーマンス上のメリットもあります。

require 'benchmark'

sym = :a
s = Struct.new(*Array.new(100){ sym = sym.succ })

Benchmark.bm do |x|
  x.report do
    1000.times { s.members }
  end
end

以上のコードを実行したところ、以下の結果となりました。

trunk(r35158):
       user     system      total        real
   0.000000   0.000000   0.000000 (  0.003188)

proposal:
       user     system      total        real
   0.000000   0.000000   0.000000 (  0.000688)

patchを添付します。


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

In This Thread