lucene-ruby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erik Hatcher <e...@ehatchersolutions.com>
Subject Re: quick jruby + solr benchmarks
Date Wed, 26 Nov 2008 15:34:44 GMT
I just had a brief conversation with Yonik on this to get his way more  
expert opinion, and it really boils down to this in this particular  
test... the query itself is incredibly fast (1 millisecond or less  
QTime Solr reports) since there are no documents.  So what these  
differences are showing is merely the difference between HTTP and a  
method call - with nothing else (of note) going on.

In a realer world scenario, the HTTP overhead makes less difference as  
the work being done in the query/faceting overshadows the  
communication overhead.

There's lies, damned lies, and benchmarks :)

	Erik



On Nov 26, 2008, at 9:54 AM, Matt Mitchell wrote:

> Yeah I overlooked all of that. Thanks Erik. So could a better query  
> test be
> an incremental one based on id like:
>
> 100.times do |id|
>  q = "id:#{id}"
>  # query request here...
> end
>
> ?
>
> Would you happen to know why the solr home and data dir never really  
> change?
> Anytime I use commons http or embedded, a "solr" directory is  
> created in the
> same directory as my script. Even though I'm setting the home and  
> data dir
> in my code?
>
> Matt
>
> On Wed, Nov 26, 2008 at 3:28 AM, Erik Hatcher <erik@ehatchersolutions.com 
> >wrote:
>
>> just a couple of quick code comments...
>>
>> On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
>>
>>> # EmbeddedSolrServer
>>> def embedded(solr_home)
>>> @embedded ||= (
>>>  import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
>>>  import org.apache.solr.core.CoreContainer
>>>  import org.apache.solr.core.CoreDescriptor
>>>  import org.apache.solr.client.solrj.SolrQuery
>>>  core_name = 'main-core'
>>>  container = CoreContainer.new
>>>  descriptor = CoreDescriptor.new(container, core_name, solr_home)
>>>  core = container.create(descriptor)
>>>
>>
>> You'll want to close that core, otherwise the JVM doesn't exit.  I  
>> changed
>> this to:
>>
>> @core = ....
>>
>>   container.register(core_name, core, false)
>>>
>>
>> and used @core there.
>>
>> query = {'qt' => 'standard', 'q'=>'ipod', 'facet.field' => 'cat'}
>>>
>>
>> Note that faceting is not enabled unless there is also a &facet=on
>>
>> params = hash_to_params(query)
>>>
>>> max = 1000
>>>
>>> Benchmark.bm do |x|
>>> x.report 'http commons' do
>>>  max.times do
>>>    http_commons.query(params)
>>>  end
>>> end
>>> x.report 'embedded' do
>>>  max.times do
>>>    embedded(solr_home).query(params)
>>>  end
>>> end
>>> end
>>>
>>
>> And I added an:
>>
>> @core.close
>>
>> at the end.
>>
>>       Erik
>>
>>


Mime
View raw message