on main help sign in
perf(diffview): use faster checksum algorithm
commita5b8fd567bea63a7dc3dd29780b5833842c294b2 authorAndrey Nering <andreynering@users.noreply.github.com> dateTue 22 Jul 2025, 11:41 (1 year ago) parent4503e69
3 files changed+10−2
go.mod+2 go.sum+6 internal/tui/exp/diffview/diffview.go+2−2
go.mod+2
@@ -39,6 +39,7 @@ require (
3939 github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef
4040 github.com/stretchr/testify v1.10.0
4141 github.com/tidwall/sjson v1.2.5
42+ github.com/zeebo/xxh3 v1.0.2
4243 golang.org/x/exp v0.0.0-20250305212735-054e65f0b394
4344 gopkg.in/natefinch/lumberjack.v2 v2.2.1
4445 mvdan.cc/sh/v3 v3.11.0
@@ -90,6 +91,7 @@ require (
9091 github.com/gorilla/css v1.0.1 // indirect
9192 github.com/gorilla/websocket v1.5.3 // indirect
9293 github.com/inconshreveable/mousetrap v1.1.0 // indirect
94+ github.com/klauspost/cpuid/v2 v2.0.9 // indirect
9395 github.com/lucasb-eyer/go-colorful v1.2.0
9496 github.com/mattn/go-isatty v0.0.20 // indirect
9597 github.com/mattn/go-runewidth v0.0.16 // indirect
go.sum+6
@@ -154,6 +154,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
154154github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
155155github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
156156github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
157+github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
158+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
157159github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
158160github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
159161github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -266,6 +268,10 @@ github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic=
266268github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
267269github.com/yuin/goldmark-emoji v1.0.5 h1:EMVWyCGPlXJfUXBXpuMu+ii3TIaxbVBnEX9uaDC4cIk=
268270github.com/yuin/goldmark-emoji v1.0.5/go.mod h1:tTkZEbwu5wkPmgTcitqddVxY9osFZiavD+r4AzQrh1U=
271+github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
272+github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
273+github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=
274+github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
269275go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
270276go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
271277go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk=
internal/tui/exp/diffview/diffview.go+2−2
@@ -1,7 +1,6 @@
11package diffview
22
33import (
4− "crypto/sha256"
54 "fmt"
65 "image/color"
76 "strconv"
@@ -12,6 +11,7 @@ import (
1211 "github.com/aymanbagabas/go-udiff"
1312 "github.com/charmbracelet/lipgloss/v2"
1413 "github.com/charmbracelet/x/ansi"
14+ "github.com/zeebo/xxh3"
1515)
1616
1717const (
@@ -769,7 +769,7 @@ func (dv *DiffView) createSyntaxCacheKey(source string, bgColor color.Color) str
769769 colorStr := fmt.Sprintf("%d,%d,%d,%d", r, g, b, a)
770770
771771 // Create a hash of the content + color to use as cache key
772− h := sha256.New()
772+ h := xxh3.New()
773773 h.Write([]byte(source))
774774 h.Write([]byte(colorStr))
775775 return fmt.Sprintf("%x", h.Sum(nil))