commit a8c3f1a
delthas
·
2024-10-30 12:17:48 +0000 UTC
parent 18998b0
Optimize large line merging Avoids getting to 100% CPU when sr.ht restarts ;-)
1 files changed,
+9,
-2
M
app.go
M
app.go
+9,
-2
1@@ -1749,6 +1749,7 @@ func (app *App) completions(cursorIdx int, text []rune) []ui.Completion {
2 type mergedEvent struct {
3 oldNick string
4 nick string
5+ nickCf string
6 firstConnected int // -1: offline; 1: online
7 lastConnected int // -1: offline; 1: online
8 modeSet string
9@@ -2025,7 +2026,7 @@ func (app *App) mergeLine(former *ui.Line, addition ui.Line) {
10 flowNick := func(nick string) *mergedEvent {
11 nickCf := strings.ToLower(nick)
12 for _, f := range flows {
13- if strings.ToLower(f.nick) == nickCf {
14+ if f.nickCf == nickCf {
15 return f
16 }
17 }
18@@ -2049,10 +2050,12 @@ func (app *App) mergeLine(former *ui.Line, addition ui.Line) {
19 f := flowNick(ev.FormerNick)
20 if f != nil {
21 f.nick = ev.User
22+ f.nickCf = strings.ToLower(ev.User)
23 } else {
24 flows = append(flows, &mergedEvent{
25 oldNick: ev.FormerNick,
26 nick: ev.User,
27+ nickCf: strings.ToLower(ev.User),
28 })
29 }
30 case irc.UserJoinEvent:
31@@ -2067,6 +2070,7 @@ func (app *App) mergeLine(former *ui.Line, addition ui.Line) {
32 } else {
33 flows = append(flows, &mergedEvent{
34 nick: ev.User,
35+ nickCf: strings.ToLower(ev.User),
36 firstConnected: 1,
37 lastConnected: 1,
38 })
39@@ -2083,6 +2087,7 @@ func (app *App) mergeLine(former *ui.Line, addition ui.Line) {
40 } else {
41 flows = append(flows, &mergedEvent{
42 nick: ev.User,
43+ nickCf: strings.ToLower(ev.User),
44 firstConnected: -1,
45 lastConnected: -1,
46 })
47@@ -2099,6 +2104,7 @@ func (app *App) mergeLine(former *ui.Line, addition ui.Line) {
48 } else {
49 flows = append(flows, &mergedEvent{
50 nick: ev.User,
51+ nickCf: strings.ToLower(ev.User),
52 firstConnected: -1,
53 lastConnected: -1,
54 })
55@@ -2116,7 +2122,8 @@ func (app *App) mergeLine(former *ui.Line, addition ui.Line) {
56 f := flowNick(nick)
57 if f == nil {
58 f = &mergedEvent{
59- nick: nick,
60+ nick: nick,
61+ nickCf: strings.ToLower(nick),
62 }
63 flows = append(flows, f)
64 }