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 					}