On Feb 7, 2010, at 12:31 PM, Mat Brown wrote: > > I've had this idea kicking around in my head for a while, and had some > time yesterday to start playing around with it: ActiveSupport is > heavily used in both the Rails library code and in the application > layer of a typical Rails stack. Certain parts of AS would be much more > efficiently implemented in C rather than Ruby; that optimization could > potentially have some noticeable, positive effects on a Rails app's > performance. So, why not write a library that swaps out the > appropriate ActiveSupport methods with native C implementations? > > So I'm looking for feedback from the group on that idea. Some > questions that come to mind: > > * Is this a new idea? I did some googling around and didn't find > anything, but I don't want to reinvent the wheel here. > * Is this a bad idea? Of course AS itself wouldn't want to restrict > itself to a particular Ruby interpreter, but I don't see any harm in > an add-on library that optimizes it for MRI. Am I missing anything? > * How widely applicable is it? The ActiveSupport::Inflector singleton > provides some *very* low-hanging fruit - unscientific benchmarking is > suggesting 10x speed improvements in #underscore, #camel_case, etc. > But native implementations are probably only useful for methods that > perform non-trivial work that has no direct relation to the Ruby space > - string manipulation and arithmetic being the obvious candidates. Is > it worth trying to provide a comprehensive suite of ActiveSupport > native implementations? > * How about using existing bindings to C libraries? So far I've > focused on simply reimplementing individual AS methods using pure C, > but, for instance, it might be worth reimplementing ActiveSupport's > XML support using Nokogiri, etc. > > If folks think this is a worthwhile idea, I'd love to get as many > people as possible involved. But for now, I'd appreciate any feedback > y'all have. > > The tinkering I did yesterday is here. It's basically just a single C > file with several native implementations of AS methods, and a single > Ruby file which benchmarks the methods against their pure-Ruby > equivalents and also checks that the output of the corresponding > methods is the same across a set of inputs: > > http://github.com/outoftime/native_support > > Looking forward to thoughts, comments, criticism, stinging insults, > etc. if you've got 'em. > > Mat
This looks great, but have you considered the complexities of i8n on a native implementation? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

