You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Erick Erickson (JIRA)" <ji...@apache.org> on 2016/07/15 18:44:20 UTC

[jira] [Updated] (SOLR-9296) Examine SortingResponseWriter with an eye towards removing extra object creation

     [ https://issues.apache.org/jira/browse/SOLR-9296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Erick Erickson updated SOLR-9296:
---------------------------------
    Attachment: SOLR-9296.patch

Here's what the patch looks like. If you want to play with it be aware of a couple of things:

There's a bunch of instrumentation in here that'll be removed. As it stands, these two vars are set up for measurement:
  static boolean reuseBuffers = true;
  static boolean justMeasure = true;

reuseBuffers is for comparing the new paths that try to minimize object creating, set to false if you want to see the older behavior.

justMeasure uses the (nocommit) NullWriter to avoid writing to the client for perf measurements, except you will get one summary tuple back at the very end.

Posting here for any comments people want to make. In particular I have these ReusableWriters as yet more local classes, unsure whether they'd be useful on their own and should be moved to some utility class (suggestions?).

More when I have time.

> Examine SortingResponseWriter with an eye towards removing extra object creation
> --------------------------------------------------------------------------------
>
>                 Key: SOLR-9296
>                 URL: https://issues.apache.org/jira/browse/SOLR-9296
>             Project: Solr
>          Issue Type: Improvement
>      Security Level: Public(Default Security Level. Issues are Public) 
>    Affects Versions: 6.2, master (7.0)
>            Reporter: Erick Erickson
>            Assignee: Erick Erickson
>         Attachments: SOLR-9296.patch
>
>
> Assigning to myself just to keep from losing track it. Anyone who wants to take it, please feel free!
> While looking at SOLR-9166 I noticed that SortingResponseWriter does a toString for each field it writes out. At a _very_ preliminary examination it seems like we create a lot of String objects that need to be GC'd. Could we reduce this by using some kind of CharsRef/ByteBuffer/Whatever?
> I've only looked at this briefly, not quite sure what the gotchas are but throwing it out for discussion.
> Some initial thoughts:
> 1> for the fixed types (numerics, dates, booleans) there's a strict upper limit on the size of each value so we can allocate something up-front.
> 2> for string fields, we already get a chars ref so just pass that through?
> 3> must make sure that whatever does the actual writing transfers all the bytes before returning.
> I'm sure I won't get to this for a week or perhaps more, so grab it if you have the bandwidth.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org