From: ko1@... Date: 2014-12-12T09:39:57+00:00 Subject: [ruby-core:66805] [ruby-trunk - Feature #10585] struct: speedup struct.attr = v for first 10 attributes and struct[:attr] for big structs Issue #10585 has been updated by Koichi Sasada. I don't have any idea about these patch. In fact, I like 0001. So just comments and questions for curious. > I was really disappointed when I discovered that struct.name= v > is much slower than object.name= v when name defined with attr_accessor. How about to implement Struct as attr_setter? ---- Another question is "how many people use Struct?". Do you know? Any trouble on performance of Struct? Ruby has Hash object and Class's attribute. Most of people using them. Only I know is the book "understanding computation" :) ---------------------------------------- Feature #10585: struct: speedup struct.attr = v for first 10 attributes and struct[:attr] for big structs https://bugs.ruby-lang.org/issues/10585#change-50378 * Author: Yura Sokolov * Status: Open * Priority: Normal * Assignee: * Category: core * Target version: current: 2.2.0 ---------------------------------------- 0001 - Define optimized setters for first 10 attributes. 0002 - Cache members definition in an subclasses - it is safe cause it could be modified/overloaded. And use `rb_attr_get` to lookup definition - it is safe cause result is checked later and `Qnil` is treated as error. 0003,0004 - Use custom hash structure (on top of Array) to lookup members index in a big structure. Well, I doubt that big structures are useful, so I will not grieve if 0004 is not accepted. ---Files-------------------------------- 0001-struct.c-speedup-struct.name-v-for-small-structs.patch (2.33 KB) 0002-struct.c-cache-member-definition-in-a-subclass.patch (1.09 KB) 0003-benchmark-struct-name.patch (2.42 KB) 0004-struct.c-speedup-for-big-structs.patch (5.47 KB) -- https://bugs.ruby-lang.org/