dungba88 commented on code in PR #12624:
URL: https://github.com/apache/lucene/pull/12624#discussion_r1395069004


##########
lucene/core/src/java/org/apache/lucene/util/fst/BytesStore.java:
##########
@@ -337,11 +349,23 @@ public long size() {
     return getPosition();
   }
 
+  /** Similar to {@link #truncate(long)} with newLen=0 but keep the first 
block to reduce GC. */
+  public void reset() {

Review Comment:
   Yeah it seems the main complexity is due to the fact that we need to 
override the previously written bytes, sometimes when we want to remove the 
labels, sometimes when we need to update the header after writing everything. 
So I guess making it forward would not eliminate those backward writing 
operation.
   
   I simplified the writing operation a bit in the direct addressing mode. 
Seems like we can convert it to append-only mode. But the binary search one 
seems to be difficult, as when we fix the arc we need to do in backward (I 
assume to avoid overriding?). Anyhow, the remaining backward operations are:
   - writeBytes: As mentioned, this is used in the binary search mode. If we 
first copy the whole buffer to a new one, we can start appending back to back. 
But this isn't as efficient as the current in-place copy? The whole method 
seems to be expanding each arc from variable arc length to fixed arc lengths.
   - reverse: This is only done at the end before writing to the DataOutput and 
the NodeHash.ByteBlockPool



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to