Thursday, November 16, 2017

Re: Vim surprisingly slow?

On 2017-11-16 08:03, Christian Brabandt wrote:
> On the other hand, we can not fsync() at the end of the `:g`
> command, because at that time, we would not have a filehandle to
> fsync().

I suppose one could gather the file-handles used during the :g
command and then issue one fsync() for each of them when finished.

Pseudocode something like

filehandle_set = set()

def begin_global_command():
filehandle_set.clear()


def deferrable_fsync(fp):
if in_a_global_command():
filehandle_set.add(fp)
else:
fsync(fp)

def end_global_command():
for fp in filehandle_set:
fsync(fp)
filehandle_set.clear()

> I suppose skipping the fsync() would be okay in this edge case
> for :g command and trust, that the kernel will write the changes to
> disk. The only problem would be a system crash or power failure but
> I believe this is relatively unlikely.

Alternatively, it might just be enough to document that ":w" also
does an fsync() and might be slow, while writefile() doesn't issue
fsync() and could be faster. For me it was as much the surprise as
anything else.

-tim



--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment