lucene-ruby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Mitchell" <goodie...@gmail.com>
Subject Re: quick jruby + solr benchmarks
Date Wed, 26 Nov 2008 17:06:57 GMT
Interesting. My main goal was to get a feel for how jruby and the
direct/embedded stuff compared to mri ruby and straight up http. But
obviously, the data and these tests are not realistic at all. Thanks for
your feedback guys.

Matt

On Wed, Nov 26, 2008 at 10:34 AM, Erik Hatcher
<erik@ehatchersolutions.com>wrote:

> 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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message