[Backgroundrb-devel] [Rails] Is drb much slower than memcached ?

Ezra Zygmuntowicz ezmobius at gmail.com
Mon Sep 25 22:20:04 EDT 2006


Hi-

	YEah memcached is pure C and is very fast. DRb is a bit slower for  
caching. Backgroundrb has caching features but I recommend you use  
memcached for scalable cache. Backgroundrb is more for the worker  
classes then for caching.


Cheers-
-Ezra


On Sep 25, 2006, at 7:00 PM, awatermail wrote:

>
>
> I do some test, surprising to find seeming to access drb much  
> slower than
> access memcached.
>
> If it's true, should we use more memcached directly than drb based  
> things
> (like backgrounddrb) in scale situation ?
>
> Before the test, I can't decide whether to do(such as get/set  
> global data
> operations) in drb/backgrounddrb or just access memcached in
> actioncontrollers.
>
> I have thought of that doing save(or some read) operations in
> drb/backgroundrb asynchronous will improve the performance highly.
>
> Hope for your idea, thank you.
>
> water
>
> The test:
>
> ?summary?
> just loop 100 times doing a simple action with drb & memcached, see  
> how long
> they will take.
>
> ?background?
> ruby 1.8.4 (2006-04-14) [i386-mswin32]
> Rails 1.1.6
> memcache-client-1.0.3
> Distributed Ruby: _dRuby_ version 2.0.4  # from ruby/lib/rub/1.8/ 
> drb/drb.rb
>
> ?begin?
> # RAILS_ROOT/config/enviroments/development.rb
> # new drb object here to ensure just new it once at the beginning
> require 'drb'
> DRb.start_service()
> DRB_OBJ = DRbObject.new(nil, 'druby://localhost:9000')
>
> # In a simple actioncontroller
> class TestController < ApplicationController
>   def test
>     start_time = Time.now.to_f
>     100.times do
>       DRB_OBJ.doNothingInSide() # just invoke a simple drb  
> function, do
> nothing inside
>     end
>     end_time = Time.now.to_f
>     flash['tm2'] = sprintf("DRB access take (%0.9f)", end_time -  
> start_time)
> # log the duration to show in view
>
>     start_time = Time.now.to_f
>     100.times do
>       Cache::put('test', {'test' => 'just test'}) # just set the  
> memcached
> through memcache-client's put method
>     end
>     end_time = Time.now.to_f
>     flash['tm1'] = sprintf("Memcache access take (%0.9f)", end_time -
> start_time) # log the duration to show in view
>   end
> end
>
> # In the simple view
> <p>tm1=#<%=flash['tm1']%>#</p>
> <p>tm2=#<%=flash['tm2']%>#</p>
>
> # run & see the results
> tm1=#Memcache access take (0.546000004)
> tm2=#DRB access take (3.141000032)
>
>
> The running results different every time, but all show memcached  
> much faster
> than drb access.
>
>
> --~--~---------~--~----~------------~-------~--~----~
> 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 rubyonrails-talk at googlegroups.com
> To unsubscribe from this group, send email to rubyonrails-talk- 
> unsubscribe at googlegroups.com
> For more options, visit this group at http://groups.google.com/ 
> group/rubyonrails-talk
> -~----------~----~----~----~------~----~------~--~---
>



More information about the Backgroundrb-devel mailing list