Project

General

Profile

Actions

Feature #6218

closed

struct.cのrb_struct_s_members_m()について

Added by Glass_saga (Masaki Matsushita) about 12 years ago. Updated almost 12 years ago.

Status:
Closed
Target version:
-
[ruby-dev:45451]

Description

表題の関数では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を添付します。


Files

patch.diff (563 Bytes) patch.diff Glass_saga (Masaki Matsushita), 03/28/2012 10:24 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0