Skip to content

Commit

Permalink
Run processors on whole of text (#16155)
Browse files Browse the repository at this point in the history
There is an inefficiency in the design of our processors which means that Emoji
and other processors run in order n^2 time.

This PR forces the processors to process the entirety of text node before passing
back up. The fundamental inefficiency remains but it should be significantly
ameliorated.

Signed-off-by: Andrew Thornton <[email protected]>
  • Loading branch information
zeripath authored Jun 17, 2021
1 parent 6ad5d0a commit 0db1048
Show file tree
Hide file tree
Showing 3 changed files with 416 additions and 318 deletions.
5 changes: 5 additions & 0 deletions modules/emoji/emoji.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package emoji

import (
"io"
"sort"
"strings"
"sync"
Expand Down Expand Up @@ -145,6 +146,8 @@ func (n *rememberSecondWriteWriter) Write(p []byte) (int, error) {
if n.writecount == 2 {
n.idx = n.pos
n.end = n.pos + len(p)
n.pos += len(p)
return len(p), io.EOF
}
n.pos += len(p)
return len(p), nil
Expand All @@ -155,6 +158,8 @@ func (n *rememberSecondWriteWriter) WriteString(s string) (int, error) {
if n.writecount == 2 {
n.idx = n.pos
n.end = n.pos + len(s)
n.pos += len(s)
return len(s), io.EOF
}
n.pos += len(s)
return len(s), nil
Expand Down
Loading

0 comments on commit 0db1048

Please sign in to comment.