[ https://issues.apache.org/jira/browse/LUCENE-705?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12564355#action_12564355 ]
Michael McCandless commented on LUCENE-705: ------------------------------------------- {quote} Does this mean one will no longer be able to tell exactly how large the index really is (because some portion of some data files will actually be empty)? {quote} Only while the CFS is being built. After it's done being built, then it is "fully occupied" (no portion are empty). > CompoundFileWriter should pre-set its file length > ------------------------------------------------- > > Key: LUCENE-705 > URL: https://issues.apache.org/jira/browse/LUCENE-705 > Project: Lucene - Java > Issue Type: Improvement > Components: Index > Affects Versions: 2.1 > Reporter: Michael McCandless > Assignee: Michael McCandless > Priority: Minor > Fix For: 2.4 > > Attachments: LUCENE-705.patch > > > I've read that if you are writing a large file, it's best to pre-set > the size of the file in advance before you write all of its contents. > This in general minimizes fragmentation and improves IO performance > against the file in the future. > I think this makes sense (intuitively) but I haven't done any real > performance testing to verify. > Java has the java.io.File.setLength() method (since 1.2) for this. > We can easily fix CompoundFileWriter to call setLength() on the file > it's writing (and add setLength() method to IndexOutput). The > CompoundFileWriter knows exactly how large its file will be. > Another good thing is: if you are going run out of disk space, then, > the setLength call should fail up front instead of failing when the > compound file is actually written. This has two benefits: first, you > find out sooner that you will run out of disk space, and, second, you > don't fill up the disk down to 0 bytes left (always a frustrating > experience!). Instead you leave what space was available > and throw an IOException. > My one hesitation here is: what if out there there exists a filesystem > that can't handle this call, and it throws an IOException on that > platform? But this is balanced against possible easy-win improvement > in performance. > Does anyone have any feedback / thoughts / experience relevant to > this? -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]