on main help sign in
perf(diffview): use faster checksum algorithm
a5b8fd5Andrey Nering
@@ -39,6 +39,7 @@ require (
39 github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef
39 github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef
40 github.com/stretchr/testify v1.10.0
40 github.com/stretchr/testify v1.10.0
41 github.com/tidwall/sjson v1.2.5
41 github.com/tidwall/sjson v1.2.5
42+ github.com/zeebo/xxh3 v1.0.2
42 golang.org/x/exp v0.0.0-20250305212735-054e65f0b394
43 golang.org/x/exp v0.0.0-20250305212735-054e65f0b394
43 gopkg.in/natefinch/lumberjack.v2 v2.2.1
44 gopkg.in/natefinch/lumberjack.v2 v2.2.1
44 mvdan.cc/sh/v3 v3.11.0
45 mvdan.cc/sh/v3 v3.11.0
@@ -90,6 +91,7 @@ require (
90 github.com/gorilla/css v1.0.1 // indirect
91 github.com/gorilla/css v1.0.1 // indirect
91 github.com/gorilla/websocket v1.5.3 // indirect
92 github.com/gorilla/websocket v1.5.3 // indirect
92 github.com/inconshreveable/mousetrap v1.1.0 // indirect
93 github.com/inconshreveable/mousetrap v1.1.0 // indirect
94+ github.com/klauspost/cpuid/v2 v2.0.9 // indirect
93 github.com/lucasb-eyer/go-colorful v1.2.0
95 github.com/lucasb-eyer/go-colorful v1.2.0
94 github.com/mattn/go-isatty v0.0.20 // indirect
96 github.com/mattn/go-isatty v0.0.20 // indirect
95 github.com/mattn/go-runewidth v0.0.16 // indirect
97 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
154github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
154github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
155github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
155github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
156github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
156github.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=
157github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
159github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
158github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
160github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
159github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
161github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -266,6 +268,10 @@ github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic=
266github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
268github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
267github.com/yuin/goldmark-emoji v1.0.5 h1:EMVWyCGPlXJfUXBXpuMu+ii3TIaxbVBnEX9uaDC4cIk=
269github.com/yuin/goldmark-emoji v1.0.5 h1:EMVWyCGPlXJfUXBXpuMu+ii3TIaxbVBnEX9uaDC4cIk=
268github.com/yuin/goldmark-emoji v1.0.5/go.mod h1:tTkZEbwu5wkPmgTcitqddVxY9osFZiavD+r4AzQrh1U=
270github.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=
269go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
275go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
270go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
276go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
271go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk=
277go.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 @@
1package diffview
1package diffview
2
2
3import (
3import (
4− "crypto/sha256"
5 "fmt"
4 "fmt"
6 "image/color"
5 "image/color"
7 "strconv"
6 "strconv"
@@ -12,6 +11,7 @@ import (
12 "github.com/aymanbagabas/go-udiff"
11 "github.com/aymanbagabas/go-udiff"
13 "github.com/charmbracelet/lipgloss/v2"
12 "github.com/charmbracelet/lipgloss/v2"
14 "github.com/charmbracelet/x/ansi"
13 "github.com/charmbracelet/x/ansi"
14+ "github.com/zeebo/xxh3"
15)
15)
16
16
17const (
17const (
@@ -769,7 +769,7 @@ func (dv *DiffView) createSyntaxCacheKey(source string, bgColor color.Color) str
769 colorStr := fmt.Sprintf("%d,%d,%d,%d", r, g, b, a)
769 colorStr := fmt.Sprintf("%d,%d,%d,%d", r, g, b, a)
770
770
771 // Create a hash of the content + color to use as cache key
771 // Create a hash of the content + color to use as cache key
772− h := sha256.New()
772+ h := xxh3.New()
773 h.Write([]byte(source))
773 h.Write([]byte(source))
774 h.Write([]byte(colorStr))
774 h.Write([]byte(colorStr))
775 return fmt.Sprintf("%x", h.Sum(nil))
775 return fmt.Sprintf("%x", h.Sum(nil))