From: SASADA Koichi Date: 2010-10-21T01:14:55+09:00 Subject: [ruby-dev:42437] Re: Call for Cooperation: CFUNC usage survey Hi, Thank you for your help. I can find out (confirm) several characteristic of Ruby application. (Unfortunately, no Rails related result are collected). Fig.1 Results For the each application, the result sorted by shallow count (descending order) deep count (ascending order) http://www.atdot.net/fp/view/dvhlal Fig.1 shows the result of this survey. Insights: (1) We can observe same tendency for all applications. (2) Most of CFUNC invocation is "shallow" invocation. (3) Small amount of methods account for the invocation count. (4) Shallow/frequent method names (not available in pictures). Next: We can develop: (1) Mechanism to invoke shallow/frequent methods In fact, this is the reason why I make this survey. Currently, we have specialized instructions in Ruby 1.9 virtual machine. However, to add new specialized instructions, we need to modify VM code. We want to extend this feature more general. (2) Make some deep methods to shallow method Reading the source code of some deep methods, unnecessary method invocation can be observed. We can get rid of such inefficient methods calls. (3) Revise frequent called methods. Thank you for your help, again. Regards, Koichi ----- In Japanese にほんご ありがとうございました。いくつか最適化に関するヒントを得ることができました。 -- // SASADA Koichi at atdot dot net (2010/10/15 7:52), SASADA Koichi wrote: > Hi, > > I want to survey the Ruby interpreter usage. > > If you have > > - a real application on Ruby 1.9 trunk > if that application has a performance issue, it is welcome. > - the build environment > - time > > please cooperate me to survey the CFUNC usage. > > Procedure: > (1) Check out ruby trunk > $ svn co http://svn.ruby-lang.org/repos/trunk > (2) Apply a patch which is attached to this mail > (3) Build ruby interpter and install it > (4) Run application on the interpreter > Ruby prints the results into STDERR at the end of ruby process. > > $ ruby [application] 2> result > > (5) Send me the result with > - your environment (ruby -v) > - brief description of your application. > > Download-able URL instead of attaching the result is preferable > because the result will be a huge text file. > > (6) Do not forget to remove (or invalidate) installed Ruby > > > Result: > The results show the usage of CFUNC. CFUNC is methods implemented in C. > > > method_name [shallow count] [deep count] > ... > > > [shallow count] means the number of invoking the method named > [method_name] without invoking the other methods (and blocks, and so > on). [deep count] is the number of invoking which invoke other methods. > > > result sample (sorted by Excel): > http://www.atdot.net/sp/view/fmjbal > application: rdoc (build process) > environment: ruby 1.9.3dev (2010-10-14) [i686-linux] > > > Purpose: > > To tune the VM. I can find out which CFUNC method / what kind of > methods should be faster. > > > Thank you for. > > Regards, > Koichi > > ---- > Japanese (にほんご): > >  CFUNC がどんな感じで使われてるか知りたいので、パッチあてて実行して、結 > 果を送って下さると助かります。結果は、プロセス終了時に標準エラー出力に出 > ます(正確には、スレッドが回収されるときにスレッド後のに出力)。 > > # 1.9 のリアルアプリケーションってどれくらいあるんだろ。 > -- // SASADA Koichi at atdot dot net