[ https://issues.apache.org/jira/browse/LUCENE-9395?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17128876#comment-17128876 ]
David Smiley commented on LUCENE-9395: -------------------------------------- Hello! {{org.apache.lucene.search.DoubleValuesSource#getValues}} is called about once per segment, and so it's not an allocation hotspot. There are tons of implementations of this method and similarly for {{org.apache.lucene.search.Weight#scorer}} as well which is also called about once per segment that typically allocate a bunch of stuff. I don't think it's worth bothering changing the code. There is a very slight help for the GC (that I doubt you could even measure) and a very slight negative impact on complexity. > ConstantValuesSource creates more than one DoubleValues unnecessarily > ---------------------------------------------------------------------- > > Key: LUCENE-9395 > URL: https://issues.apache.org/jira/browse/LUCENE-9395 > Project: Lucene - Core > Issue Type: Improvement > Components: core/search > Affects Versions: 8.5.2 > Reporter: Tony Xu > Priority: Minor > Attachments: LUCENE-9395.patch > > > At my day job, we use ConstantValuesSource to represent default values or a > constant query-level feature by calling *_DoubleValuesSource.constant_*. I > realized under the hood the _*ConstantValuesSource.getDoubleValues*_ creates > a new _*DoubleValues*_ which simply return the specified value each time it > is called. > Unless I missed something, I don't see a risk of creating one > _*DoubleValues*_ as use it as the return value of all _*getDoubleValues**()*_ > calls given that the constant _*DoubleValues*_ doesn't maintain any state. > We can also offer the user flexibilities of how to initialize it. > 1) _*DoubleValuesSource.constant(double constant)*_ – we can eagerly > initialize an `DoubleValues` that returns the constant and make it the return > value of all _*getDoubleValues()*_ calls. > 2) _*DoubleValuesSource.constant(DoubleSupplier doubleSupplier)*_ – For lazy > evaluation if the constant takes some time to compute and user expects the > returned DVS will not be used in all code path. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org