mirror of
https://github.com/m00natic/vlfi.git
synced 2025-01-18 20:10:47 +00:00
Document tune functionality.
This commit is contained in:
parent
9b6657bcc5
commit
ff06509caa
93
README.org
93
README.org
@ -1,11 +1,11 @@
|
|||||||
* View Large Files
|
* View Large Files
|
||||||
|
|
||||||
Emacs minor mode that allows viewing, editing, searching and comparing
|
Emacs minor mode that allows viewing, editing, searching and comparing
|
||||||
large files in batches. Batch size can be adjusted on the fly and
|
large files in batches, trading memory for processor time. Batch size
|
||||||
bounds the memory that is to be used for operations on the file. This
|
can be adjusted on the fly and bounds the memory that is to be used
|
||||||
way multiple large files (like terabytes or whatever) can be instantly
|
for operations on the file. This way multiple large files (like
|
||||||
and simultaneously accessed without swapping and degraded
|
terabytes or whatever) can be instantly and simultaneously accessed
|
||||||
performance.
|
without swapping and degraded performance.
|
||||||
|
|
||||||
This is development version of the GNU ELPA [[http://elpa.gnu.org/packages/vlf][VLF]] package. Here's what
|
This is development version of the GNU ELPA [[http://elpa.gnu.org/packages/vlf][VLF]] package. Here's what
|
||||||
it offers in a nutshell:
|
it offers in a nutshell:
|
||||||
@ -16,10 +16,10 @@ it offers in a nutshell:
|
|||||||
constant memory determined by current batch size otherwise)
|
constant memory determined by current batch size otherwise)
|
||||||
- [[http://www.emacswiki.org/emacs/OccurMode][Occur]] like indexing
|
- [[http://www.emacswiki.org/emacs/OccurMode][Occur]] like indexing
|
||||||
- options to jump to beginning, end or arbitrary file chunk
|
- options to jump to beginning, end or arbitrary file chunk
|
||||||
- ability to jump/insert given number of batches at once
|
|
||||||
- newly added content is acknowledged if file has changed size
|
- newly added content is acknowledged if file has changed size
|
||||||
meanwhile
|
meanwhile
|
||||||
- automatic scrolling of batches
|
- automatic scrolling of batches
|
||||||
|
- automatic adjustment of batch size for optimal performance
|
||||||
- as it's a minor mode, font locking and functionality of the
|
- as it's a minor mode, font locking and functionality of the
|
||||||
respective major mode is also present
|
respective major mode is also present
|
||||||
- by batch [[http://www.emacswiki.org/emacs/EdiffMode][Ediff]] comparison
|
- by batch [[http://www.emacswiki.org/emacs/EdiffMode][Ediff]] comparison
|
||||||
@ -45,19 +45,15 @@ Regular Emacs integers are used, so if you use 32-bit Emacs without
|
|||||||
bignum support, *VLF* will not work with files over 512 MB (maximum
|
bignum support, *VLF* will not work with files over 512 MB (maximum
|
||||||
integer value).
|
integer value).
|
||||||
|
|
||||||
** Memory control
|
|
||||||
|
|
||||||
*vlf-batch-size* bounds the memory used for all operations.
|
|
||||||
|
|
||||||
* Detail usage
|
* Detail usage
|
||||||
|
|
||||||
** Applicability
|
** Applicability
|
||||||
|
|
||||||
To have *vlf* offered as choice when opening large files:
|
To have *vlf* offered as choice when opening large files:
|
||||||
|
|
||||||
#+BEGIN_EXAMPLE
|
#+BEGIN_SRC emacs-lisp
|
||||||
(require 'vlf-integrate)
|
(require 'vlf-integrate)
|
||||||
#+END_EXAMPLE
|
#+END_SRC
|
||||||
|
|
||||||
You can control when *vlf-mode* is invoked or offered with the
|
You can control when *vlf-mode* is invoked or offered with the
|
||||||
*vlf-application* customization option. By default it will offer
|
*vlf-application* customization option. By default it will offer
|
||||||
@ -66,10 +62,10 @@ it (you can still call *vlf* command explicitly); to use it without
|
|||||||
asking for large files or to invoke it on all files. Here's example
|
asking for large files or to invoke it on all files. Here's example
|
||||||
setup such that *vlf-mode* automatically launches for large files:
|
setup such that *vlf-mode* automatically launches for large files:
|
||||||
|
|
||||||
#+BEGIN_EXAMPLE
|
#+BEGIN_SRC emacs-lisp
|
||||||
(custom-set-variables
|
(custom-set-variables
|
||||||
'(vlf-application 'dont-ask))
|
'(vlf-application 'dont-ask))
|
||||||
#+END_EXAMPLE
|
#+END_SRC
|
||||||
|
|
||||||
*** Disable for specific mode
|
*** Disable for specific mode
|
||||||
|
|
||||||
@ -81,24 +77,44 @@ To disable automatic usage of *VLF* for a major mode, add it to
|
|||||||
To disable automatic usage of *VLF* for a function, for example named
|
To disable automatic usage of *VLF* for a function, for example named
|
||||||
*func* defined in file *file.el*:
|
*func* defined in file *file.el*:
|
||||||
|
|
||||||
#+BEGIN_EXAMPLE
|
#+BEGIN_SRC emacs-lisp
|
||||||
(vlf-disable-for-function func "file")
|
(vlf-disable-for-function func "file")
|
||||||
#+END_EXAMPLE
|
#+END_SRC
|
||||||
|
|
||||||
** Keymap
|
** Keymap
|
||||||
|
|
||||||
All *VLF* operations are grouped under the *C-c C-v* prefix by
|
All *VLF* operations are grouped under the *C-c C-v* prefix by
|
||||||
default. Here's example how to add another prefix (*C-x v*):
|
default. Here's example how to add another prefix (*C-x v*):
|
||||||
|
|
||||||
#+BEGIN_EXAMPLE
|
#+BEGIN_SRC emacs-lisp
|
||||||
(eval-after-load "vlf"
|
(eval-after-load "vlf"
|
||||||
'(define-key vlf-prefix-map "\C-xv" vlf-mode-map))
|
'(define-key vlf-prefix-map "\C-xv" vlf-mode-map))
|
||||||
#+END_EXAMPLE
|
#+END_SRC
|
||||||
|
|
||||||
** Control batch size
|
** Batch size control
|
||||||
|
|
||||||
|
By default *VLF* gathers statistics over how primitive operations
|
||||||
|
perform over file and gradually adjusts batch size for better user
|
||||||
|
experience. Operations involving multiple batches are tuned more
|
||||||
|
adventurously. Overall the more jumping around, searching, indexing,
|
||||||
|
the better performance should get.
|
||||||
|
|
||||||
|
The *vlf-tune-max* option specifies maximum size in bytes a batch
|
||||||
|
could eventually get while tuning.
|
||||||
|
|
||||||
|
Profiling and tuning can be disabled by:
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(custom-set-variables
|
||||||
|
'(vlf-tune-enabled nil))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Or set *vlf-tune-enabled* to '*stats* to profile but not change batch
|
||||||
|
size.
|
||||||
|
|
||||||
Use *M-x vlf-set-batch-size* to change batch size and update chunk
|
Use *M-x vlf-set-batch-size* to change batch size and update chunk
|
||||||
immediately.
|
immediately. Default size offered is the best according to tune
|
||||||
|
statistics so far.
|
||||||
|
|
||||||
*C-c C-v +* and *C-c C-v -* control current batch size by factors
|
*C-c C-v +* and *C-c C-v -* control current batch size by factors
|
||||||
of 2.
|
of 2.
|
||||||
@ -130,33 +146,28 @@ toggled with *C-c C-v f*.
|
|||||||
** Search whole file
|
** Search whole file
|
||||||
|
|
||||||
*C-c C-v s* and *C-c C-v r* search forward and backward respectively
|
*C-c C-v s* and *C-c C-v r* search forward and backward respectively
|
||||||
over the whole file. This is done batch by batch so if you have
|
over the whole file, batch by batch.
|
||||||
really huge file - you'd better set somewhat bigger batch size
|
|
||||||
beforehand.
|
|
||||||
|
|
||||||
** Occur over whole file
|
** Occur over whole file
|
||||||
|
|
||||||
*C-c C-v o* builds index for given regular expression just like
|
*C-c C-v o* builds index over whole file for given regular expression
|
||||||
*M-x occur*. It does so batch by batch over the whole file. Note
|
just like *M-x occur*. Note that even if you prematurely stop it with
|
||||||
that even if you prematurely stop it with *C-g*, it will still show
|
*C-g*, it will still show what's found so far.
|
||||||
index of what's found so far.
|
|
||||||
|
|
||||||
Result buffer uses *vlf-occur-mode* which allows to optionally open
|
Result buffer uses *vlf-occur-mode* which allows to optionally open
|
||||||
new VLF buffer on jump to match (using *C-u* before hitting RET or
|
new *VLF* buffer on jump to match (using *C-u* before hitting RET or
|
||||||
*o*). Also results can be serialized to file for later reuse.
|
*o*), thus having multiple simultaneous views of the same file. Also
|
||||||
|
results can be serialized to file for later reuse.
|
||||||
|
|
||||||
** Jump to line
|
** Jump to line
|
||||||
|
|
||||||
*C-c C-v l* jumps to given line in file. This is done by searching
|
*C-c C-v l* jumps to given line in file. With negative argument,
|
||||||
from the beginning, so again the bigger current batch size, probably
|
lines are counted from the end of file.
|
||||||
the quicker. With negative argument, lines are counted from the end
|
|
||||||
of file.
|
|
||||||
|
|
||||||
** Edit and save
|
** Edit and save
|
||||||
|
|
||||||
If editing doesn't change size of the chunk, only this chunk is saved.
|
If editing doesn't change size of the chunk, only this chunk is saved.
|
||||||
Otherwise the remaining part of the file is adjusted batch by batch,
|
Otherwise the remaining part of the file is adjusted batch by batch.
|
||||||
so again you'd better have bigger current batch size.
|
|
||||||
|
|
||||||
** By batch Ediff
|
** By batch Ediff
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user