Christian Wellenbrock <[email protected]> wrote:
> I attached a yaml file as example. Please open it with vim to test
> the highlighting speed. Scolling and searching is very slow.
> Tested on vim 7.3.1106
Viewing your attached yaml file seems fast for me with vim-7.4.729,
both with 'set re=0' or 'set re=1'.
Anyway, looking at vim/runtime/syntax/yaml.vim, I see
several [0-9] in regexp which could be replaced by \d
This is what :help regexp says:
=== BEGIN QUOTE ===
- Matching with a collection can be slow, because each character in
the text has to be compared with each character in the collection.
Use one of the other atoms above when possible. Example: "\d" is
much faster than "[0-9]" and matches the same characters.
=== END QUOTE ===
But I wonder whether this piece of advice is still true.
In regexp_nfa.c, I see this comment:
1525 /*
1526 * Try to reverse engineer character classes. For example,
1527 * recognize that [0-9] stands for \d and [A-Za-z_] for \h,
1528 * and perform the necessary substitutions in the NFA.
1529 */
So probably [0-9] is as efficient now than \d at least with the new
NFA regexp engine.
With 'set re=0', syntime report says:
TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN
0.173880 349 0 0.001465 0.000498 yamlFloat
[^[\]{}, \t]\@1<!\%([+-]\=\%(\%(\d[0-
0.043657 349 0 0.000798 0.000125 yamlInteger
[^[\]{}, \t]\@1<!\%([+-]\=\%(0\%(b[0-
0.007699 621 602 0.000065 0.000012 yamlPlainScalar
\%([^\-?:,[\]{}#&*!|>'"%@`\n\r\uFEFF
0.004388 621 367 0.000073 0.000007 yamlBlockMappingKey
\%#=1^\s*\zs\%([^\-?:,[\]{}#&*!|>'"%@
0.004233 386 0 0.000078 0.000011
yamlBlockCollectionItemStart ^\s*\zs-\%(\s\+-\)*\s
0.003241 386 0 0.000043 0.000008 yamlComment
\%\(^\|\s\)#
0.003233 349 0 0.000045 0.000009 yamlNull
[^[\]{}, \t]\@1<!\~[^[\]{}, \t]\@!
0.002419 386 0 0.000080 0.000006
yamlBlockMappingMerge ^\s*\zs<<\ze:\%(\s\|$\)
0.000917 347 347 0.000013 0.000003 yamlKeyValueDelimiter \s*:
0.000465 347 347 0.000005 0.000001 yamlKeyValueDelimiter \s*:
0.000312 386 0 0.000007 0.000001 yamlDocumentEnd
^\.\.\.\ze\%(\s\|$\)
0.000193 386 0 0.000002 0.000001 yamlMappingKeyStart ?\ze\s
0.000166 386 0 0.000002 0.000000 yamlFlowCollection \[
0.000145 386 0 0.000003 0.000000 yamlDocumentStart
^---\ze\%(\s\|$\)
0.000138 386 0 0.000001 0.000000 yamlDirective
^\ze%[^\n\r\uFEFF \t]\+\s\+
0.000138 386 0 0.000001 0.000000 yamlAnchor
&[^\n\r\uFEFF \t,[\]{}]\+
0.000135 386 0 0.000001 0.000000 yamlFlowMapping {
0.000135 386 0 0.000001 0.000000 yamlAlias
\*[^\n\r\uFEFF \t,[\]{}]\+
0.000129 386 0 0.000002 0.000000 yamlFlowString '
0.000123 386 0 0.000002 0.000000 yamlFlowString "
0.000115 386 0 0.000003 0.000000 yamlNodeTag
!<\%(%\x\x\|[[:alnum:]_\-]\|[#/;?:@&=
Regards
Dominique
--
--
You received this message from the "vim_dev" 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_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.