Browse Source

perf: more performance improvements

Dax Raad 7 months ago
parent
commit
f06cd88773

+ 3 - 0
packages/tui/cmd/opencode/main.go

@@ -91,6 +91,9 @@ func main() {
 		stream := httpClient.Event.ListStreaming(ctx)
 		for stream.Next() {
 			evt := stream.Current().AsUnion()
+			if _, ok := evt.(opencode.EventListResponseEventStorageWrite); ok {
+				continue
+			}
 			program.Send(evt)
 		}
 		if err := stream.Err(); err != nil {

+ 6 - 1
packages/tui/internal/components/chat/messages.go

@@ -53,6 +53,8 @@ func (m *messagesComponent) Init() tea.Cmd {
 }
 
 func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
+	measure := util.Measure("messages.Update")
+	defer measure("from", fmt.Sprintf("%T", msg))
 	var cmds []tea.Cmd
 	switch msg := msg.(type) {
 	case tea.WindowSizeMsg:
@@ -102,6 +104,7 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		m.loading = false
 		m.tail = m.viewport.AtBottom()
 		m.viewport = msg.viewport
+		m.header = msg.header
 		if m.dirty {
 			cmds = append(cmds, m.renderView())
 		}
@@ -117,12 +120,12 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 
 type renderCompleteMsg struct {
 	viewport  viewport.Model
+	header    string
 	partCount int
 	lineCount int
 }
 
 func (m *messagesComponent) renderView() tea.Cmd {
-	m.header = m.renderHeader()
 
 	if m.rendering {
 		slog.Debug("pending render, skipping")
@@ -138,6 +141,7 @@ func (m *messagesComponent) renderView() tea.Cmd {
 	tail := m.tail
 
 	return func() tea.Msg {
+		header := m.renderHeader()
 		measure := util.Measure("messages.renderView")
 		defer measure()
 
@@ -405,6 +409,7 @@ func (m *messagesComponent) renderView() tea.Cmd {
 		}
 
 		return renderCompleteMsg{
+			header:    header,
 			viewport:  viewport,
 			partCount: partCount,
 			lineCount: lineCount,

+ 1 - 1
packages/tui/internal/tui/tui.go

@@ -103,7 +103,7 @@ func (a appModel) Init() tea.Cmd {
 }
 
 func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
-	measure := util.Measure("Update")
+	measure := util.Measure("app.Update")
 	defer measure("from", fmt.Sprintf("%T", msg))
 
 	var cmd tea.Cmd