From c30e486b648c1540a660802a5015aeca208274fa Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Tue, 2 Apr 2024 08:43:08 +0900 Subject: Further performance improvements by removing unnecessary copies --- src/core.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/core.go') diff --git a/src/core.go b/src/core.go index 1006109d..ae5e58bf 100644 --- a/src/core.go +++ b/src/core.go @@ -23,6 +23,10 @@ func ustring(data []byte) string { return unsafe.String(unsafe.SliceData(data), len(data)) } +func sbytes(data string) []byte { + return unsafe.Slice(unsafe.StringData(data), len(data)) +} + // Run starts fzf func Run(opts *Options, version string, revision string) { sort := opts.Sort > 0 @@ -52,14 +56,14 @@ func Run(opts *Options, version string, revision string) { prevLineAnsiState = lineAnsiState trimmed, offsets, newState := extractColor(ustring(data), lineAnsiState, nil) lineAnsiState = newState - return util.ToChars([]byte(trimmed)), offsets + return util.ToChars(sbytes(trimmed)), offsets } } else { // When color is disabled but ansi option is given, // we simply strip out ANSI codes from the input ansiProcessor = func(data []byte) (util.Chars, *[]ansiOffset) { trimmed, _, _ := extractColor(ustring(data), nil, nil) - return util.ToChars([]byte(trimmed)), nil + return util.ToChars(sbytes(trimmed)), nil } } } @@ -106,7 +110,7 @@ func Run(opts *Options, version string, revision string) { eventBox.Set(EvtHeader, header) return false } - item.text, item.colors = ansiProcessor([]byte(transformed)) + item.text, item.colors = ansiProcessor(sbytes(transformed)) item.text.TrimTrailingWhitespaces() item.text.Index = itemIndex item.origText = &data -- cgit v1.2.3