Skip to content

Commit

Permalink
fix(fs): Cache data in stdinfs (#2288)
Browse files Browse the repository at this point in the history
Signed-off-by: Dave Henderson <[email protected]>
  • Loading branch information
hairyhenderson authored Dec 16, 2024
1 parent a69bb64 commit cd74bb8
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 4 deletions.
38 changes: 34 additions & 4 deletions internal/datafs/stdinfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ func NewStdinFS(_ *url.URL) (fs.FS, error) {
}

type stdinFS struct {
ctx context.Context
ctx context.Context
data []byte
}

//nolint:gochecknoglobals
Expand Down Expand Up @@ -46,9 +47,15 @@ func (f *stdinFS) Open(name string) (fs.File, error) {
}
}

stdin := StdinFromContext(f.ctx)
if err := f.readData(); err != nil {
return nil, &fs.PathError{
Op: "open",
Path: name,
Err: err,
}
}

return &stdinFile{name: name, body: stdin}, nil
return &stdinFile{name: name, body: bytes.NewReader(f.data)}, nil
}

func (f *stdinFS) ReadFile(name string) ([]byte, error) {
Expand All @@ -60,9 +67,32 @@ func (f *stdinFS) ReadFile(name string) ([]byte, error) {
}
}

if err := f.readData(); err != nil {
return nil, &fs.PathError{
Op: "readFile",
Path: name,
Err: err,
}
}

return f.data, nil
}

func (f *stdinFS) readData() error {
if f.data != nil {
return nil
}

stdin := StdinFromContext(f.ctx)

return io.ReadAll(stdin)
b, err := io.ReadAll(stdin)
if err != nil {
return err
}

f.data = b

return nil
}

type stdinFile struct {
Expand Down
51 changes: 51 additions & 0 deletions internal/datafs/stdinfs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,57 @@ func TestStdinFS(t *testing.T) {
_, err = f.Read(p)
require.Error(t, err)
require.ErrorIs(t, err, io.EOF)

t.Run("open/read multiple times", func(t *testing.T) {
ctx := ContextWithStdin(context.Background(), bytes.NewReader(content))
fsys = fsimpl.WithContextFS(ctx, fsys)

for i := 0; i < 3; i++ {
f, err := fsys.Open("foo")
require.NoError(t, err)

b, err := io.ReadAll(f)
require.NoError(t, err)
require.Equal(t, content, b, "read %d failed", i)
}
})

t.Run("readFile multiple times", func(t *testing.T) {
ctx := ContextWithStdin(context.Background(), bytes.NewReader(content))
fsys = fsimpl.WithContextFS(ctx, fsys)

for i := 0; i < 3; i++ {
b, err := fs.ReadFile(fsys, "foo")
require.NoError(t, err)
require.Equal(t, content, b, "read %d failed", i)
}
})

t.Run("open errors", func(t *testing.T) {
ctx := ContextWithStdin(context.Background(), &errorReader{err: fs.ErrPermission})

fsys, err := NewStdinFS(u)
require.NoError(t, err)
assert.IsType(t, &stdinFS{}, fsys)

fsys = fsimpl.WithContextFS(ctx, fsys)

_, err = fsys.Open("foo")
require.ErrorIs(t, err, fs.ErrPermission)
})

t.Run("readFile errors", func(t *testing.T) {
ctx := ContextWithStdin(context.Background(), &errorReader{err: fs.ErrPermission})

fsys, err := NewStdinFS(u)
require.NoError(t, err)
assert.IsType(t, &stdinFS{}, fsys)

fsys = fsimpl.WithContextFS(ctx, fsys)

_, err = fs.ReadFile(fsys, "foo")
require.ErrorIs(t, err, fs.ErrPermission)
})
}

type errorReader struct {
Expand Down

1 comment on commit cd74bb8

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: cd74bb8 Previous: 66fd58b Ratio
BenchmarkFlatten/depth-1_[]int([1_2_3]) 167.9 ns/op 168 B/op 5 allocs/op 165.7 ns/op 168 B/op 5 allocs/op 1.01
BenchmarkFlatten/depth-1_[]int([1_2_3]) - ns/op 167.9 ns/op 165.7 ns/op 1.01
BenchmarkFlatten/depth-1_[]int([1_2_3]) - B/op 168 B/op 168 B/op 1
BenchmarkFlatten/depth-1_[]int([1_2_3]) - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkFlatten/depth-1_[3]int([1_2_3]) 118.1 ns/op 144 B/op 2 allocs/op 117.2 ns/op 144 B/op 2 allocs/op 1.01
BenchmarkFlatten/depth-1_[3]int([1_2_3]) - ns/op 118.1 ns/op 117.2 ns/op 1.01
BenchmarkFlatten/depth-1_[3]int([1_2_3]) - B/op 144 B/op 144 B/op 1
BenchmarkFlatten/depth-1_[3]int([1_2_3]) - allocs/op 2 allocs/op 2 allocs/op 1
BenchmarkFlatten/depth-1_[]interface_{}([[]_[1_2]_3]) 204.9 ns/op 208 B/op 5 allocs/op 203.4 ns/op 208 B/op 5 allocs/op 1.01
BenchmarkFlatten/depth-1_[]interface_{}([[]_[1_2]_3]) - ns/op 204.9 ns/op 203.4 ns/op 1.01
BenchmarkFlatten/depth-1_[]interface_{}([[]_[1_2]_3]) - B/op 208 B/op 208 B/op 1
BenchmarkFlatten/depth-1_[]interface_{}([[]_[1_2]_3]) - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkFlatten/depth-1_[]interface_{}([[one]_[[1_2]]_3]) 414.4 ns/op 344 B/op 11 allocs/op 422.8 ns/op 344 B/op 11 allocs/op 0.98
BenchmarkFlatten/depth-1_[]interface_{}([[one]_[[1_2]]_3]) - ns/op 414.4 ns/op 422.8 ns/op 0.98
BenchmarkFlatten/depth-1_[]interface_{}([[one]_[[1_2]]_3]) - B/op 344 B/op 344 B/op 1
BenchmarkFlatten/depth-1_[]interface_{}([[one]_[[1_2]]_3]) - allocs/op 11 allocs/op 11 allocs/op 1
BenchmarkFlatten/depth-1_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) 798.5 ns/op 896 B/op 19 allocs/op 791.2 ns/op 896 B/op 19 allocs/op 1.01
BenchmarkFlatten/depth-1_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - ns/op 798.5 ns/op 791.2 ns/op 1.01
BenchmarkFlatten/depth-1_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - B/op 896 B/op 896 B/op 1
BenchmarkFlatten/depth-1_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - allocs/op 19 allocs/op 19 allocs/op 1
BenchmarkFlatten/depth0_[]int([1_2_3]) 114.5 ns/op 72 B/op 4 allocs/op 114.2 ns/op 72 B/op 4 allocs/op 1.00
BenchmarkFlatten/depth0_[]int([1_2_3]) - ns/op 114.5 ns/op 114.2 ns/op 1.00
BenchmarkFlatten/depth0_[]int([1_2_3]) - B/op 72 B/op 72 B/op 1
BenchmarkFlatten/depth0_[]int([1_2_3]) - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkFlatten/depth0_[3]int([1_2_3]) 66.04 ns/op 48 B/op 1 allocs/op 63.74 ns/op 48 B/op 1 allocs/op 1.04
BenchmarkFlatten/depth0_[3]int([1_2_3]) - ns/op 66.04 ns/op 63.74 ns/op 1.04
BenchmarkFlatten/depth0_[3]int([1_2_3]) - B/op 48 B/op 48 B/op 1
BenchmarkFlatten/depth0_[3]int([1_2_3]) - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkFlatten/depth0_[]interface_{}([[]_[1_2]_3]) 4.36 ns/op 0 B/op 0 allocs/op 4.33 ns/op 0 B/op 0 allocs/op 1.01
BenchmarkFlatten/depth0_[]interface_{}([[]_[1_2]_3]) - ns/op 4.36 ns/op 4.33 ns/op 1.01
BenchmarkFlatten/depth0_[]interface_{}([[]_[1_2]_3]) - B/op 0 B/op 0 B/op 1
BenchmarkFlatten/depth0_[]interface_{}([[]_[1_2]_3]) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkFlatten/depth0_[]interface_{}([[one]_[[1_2]]_3]) 4.379 ns/op 0 B/op 0 allocs/op 4.442 ns/op 0 B/op 0 allocs/op 0.99
BenchmarkFlatten/depth0_[]interface_{}([[one]_[[1_2]]_3]) - ns/op 4.379 ns/op 4.442 ns/op 0.99
BenchmarkFlatten/depth0_[]interface_{}([[one]_[[1_2]]_3]) - B/op 0 B/op 0 B/op 1
BenchmarkFlatten/depth0_[]interface_{}([[one]_[[1_2]]_3]) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkFlatten/depth0_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) 4.333 ns/op 0 B/op 0 allocs/op 4.301 ns/op 0 B/op 0 allocs/op 1.01
BenchmarkFlatten/depth0_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - ns/op 4.333 ns/op 4.301 ns/op 1.01
BenchmarkFlatten/depth0_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - B/op 0 B/op 0 B/op 1
BenchmarkFlatten/depth0_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkFlatten/depth1_[]int([1_2_3]) 167.1 ns/op 168 B/op 5 allocs/op 166.1 ns/op 168 B/op 5 allocs/op 1.01
BenchmarkFlatten/depth1_[]int([1_2_3]) - ns/op 167.1 ns/op 166.1 ns/op 1.01
BenchmarkFlatten/depth1_[]int([1_2_3]) - B/op 168 B/op 168 B/op 1
BenchmarkFlatten/depth1_[]int([1_2_3]) - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkFlatten/depth1_[3]int([1_2_3]) 117.7 ns/op 144 B/op 2 allocs/op 116.9 ns/op 144 B/op 2 allocs/op 1.01
BenchmarkFlatten/depth1_[3]int([1_2_3]) - ns/op 117.7 ns/op 116.9 ns/op 1.01
BenchmarkFlatten/depth1_[3]int([1_2_3]) - B/op 144 B/op 144 B/op 1
BenchmarkFlatten/depth1_[3]int([1_2_3]) - allocs/op 2 allocs/op 2 allocs/op 1
BenchmarkFlatten/depth1_[]interface_{}([[]_[1_2]_3]) 159.2 ns/op 144 B/op 4 allocs/op 157.9 ns/op 144 B/op 4 allocs/op 1.01
BenchmarkFlatten/depth1_[]interface_{}([[]_[1_2]_3]) - ns/op 159.2 ns/op 157.9 ns/op 1.01
BenchmarkFlatten/depth1_[]interface_{}([[]_[1_2]_3]) - B/op 144 B/op 144 B/op 1
BenchmarkFlatten/depth1_[]interface_{}([[]_[1_2]_3]) - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkFlatten/depth1_[]interface_{}([[one]_[[1_2]]_3]) 213.3 ns/op 168 B/op 5 allocs/op 210.8 ns/op 168 B/op 5 allocs/op 1.01
BenchmarkFlatten/depth1_[]interface_{}([[one]_[[1_2]]_3]) - ns/op 213.3 ns/op 210.8 ns/op 1.01
BenchmarkFlatten/depth1_[]interface_{}([[one]_[[1_2]]_3]) - B/op 168 B/op 168 B/op 1
BenchmarkFlatten/depth1_[]interface_{}([[one]_[[1_2]]_3]) - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkFlatten/depth1_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) 143.5 ns/op 128 B/op 3 allocs/op 140.6 ns/op 128 B/op 3 allocs/op 1.02
BenchmarkFlatten/depth1_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - ns/op 143.5 ns/op 140.6 ns/op 1.02
BenchmarkFlatten/depth1_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - B/op 128 B/op 128 B/op 1
BenchmarkFlatten/depth1_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkFlatten/depth2_[]int([1_2_3]) 171.8 ns/op 168 B/op 5 allocs/op 166.3 ns/op 168 B/op 5 allocs/op 1.03
BenchmarkFlatten/depth2_[]int([1_2_3]) - ns/op 171.8 ns/op 166.3 ns/op 1.03
BenchmarkFlatten/depth2_[]int([1_2_3]) - B/op 168 B/op 168 B/op 1
BenchmarkFlatten/depth2_[]int([1_2_3]) - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkFlatten/depth2_[3]int([1_2_3]) 118.2 ns/op 144 B/op 2 allocs/op 116.9 ns/op 144 B/op 2 allocs/op 1.01
BenchmarkFlatten/depth2_[3]int([1_2_3]) - ns/op 118.2 ns/op 116.9 ns/op 1.01
BenchmarkFlatten/depth2_[3]int([1_2_3]) - B/op 144 B/op 144 B/op 1
BenchmarkFlatten/depth2_[3]int([1_2_3]) - allocs/op 2 allocs/op 2 allocs/op 1
BenchmarkFlatten/depth2_[]interface_{}([[]_[1_2]_3]) 208.4 ns/op 208 B/op 5 allocs/op 203.9 ns/op 208 B/op 5 allocs/op 1.02
BenchmarkFlatten/depth2_[]interface_{}([[]_[1_2]_3]) - ns/op 208.4 ns/op 203.9 ns/op 1.02
BenchmarkFlatten/depth2_[]interface_{}([[]_[1_2]_3]) - B/op 208 B/op 208 B/op 1
BenchmarkFlatten/depth2_[]interface_{}([[]_[1_2]_3]) - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkFlatten/depth2_[]interface_{}([[one]_[[1_2]]_3]) 372.9 ns/op 280 B/op 10 allocs/op 368.6 ns/op 280 B/op 10 allocs/op 1.01
BenchmarkFlatten/depth2_[]interface_{}([[one]_[[1_2]]_3]) - ns/op 372.9 ns/op 368.6 ns/op 1.01
BenchmarkFlatten/depth2_[]interface_{}([[one]_[[1_2]]_3]) - B/op 280 B/op 280 B/op 1
BenchmarkFlatten/depth2_[]interface_{}([[one]_[[1_2]]_3]) - allocs/op 10 allocs/op 10 allocs/op 1
BenchmarkFlatten/depth2_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) 325.7 ns/op 272 B/op 8 allocs/op 324.6 ns/op 272 B/op 8 allocs/op 1.00
BenchmarkFlatten/depth2_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - ns/op 325.7 ns/op 324.6 ns/op 1.00
BenchmarkFlatten/depth2_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - B/op 272 B/op 272 B/op 1
BenchmarkFlatten/depth2_[]interface_{}([[one]_[[[1]_[2_[3]]]_[4_5]]_6]) - allocs/op 8 allocs/op 8 allocs/op 1
BenchmarkInterfaceSlice/[]int([1_2_3]) 118.2 ns/op 72 B/op 4 allocs/op 112.6 ns/op 72 B/op 4 allocs/op 1.05
BenchmarkInterfaceSlice/[]int([1_2_3]) - ns/op 118.2 ns/op 112.6 ns/op 1.05
BenchmarkInterfaceSlice/[]int([1_2_3]) - B/op 72 B/op 72 B/op 1
BenchmarkInterfaceSlice/[]int([1_2_3]) - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkInterfaceSlice/[3]int([1_2_3]) 60.41 ns/op 48 B/op 1 allocs/op 60.15 ns/op 48 B/op 1 allocs/op 1.00
BenchmarkInterfaceSlice/[3]int([1_2_3]) - ns/op 60.41 ns/op 60.15 ns/op 1.00
BenchmarkInterfaceSlice/[3]int([1_2_3]) - B/op 48 B/op 48 B/op 1
BenchmarkInterfaceSlice/[3]int([1_2_3]) - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkInterfaceSlice/[]string([foo_bar_baz_foo_bar_baz_foo_bar_baz_foo_bar_baz]) 539 ns/op 384 B/op 13 allocs/op 536.3 ns/op 384 B/op 13 allocs/op 1.01
BenchmarkInterfaceSlice/[]string([foo_bar_baz_foo_bar_baz_foo_bar_baz_foo_bar_baz]) - ns/op 539 ns/op 536.3 ns/op 1.01
BenchmarkInterfaceSlice/[]string([foo_bar_baz_foo_bar_baz_foo_bar_baz_foo_bar_baz]) - B/op 384 B/op 384 B/op 1
BenchmarkInterfaceSlice/[]string([foo_bar_baz_foo_bar_baz_foo_bar_baz_foo_bar_baz]) - allocs/op 13 allocs/op 13 allocs/op 1
BenchmarkInterfaceSlice/[12]string([foo_bar_baz_foo_bar_baz_foo_bar_baz_foo_bar_baz]) 153.4 ns/op 192 B/op 1 allocs/op 152.9 ns/op 192 B/op 1 allocs/op 1.00
BenchmarkInterfaceSlice/[12]string([foo_bar_baz_foo_bar_baz_foo_bar_baz_foo_bar_baz]) - ns/op 153.4 ns/op 152.9 ns/op 1.00
BenchmarkInterfaceSlice/[12]string([foo_bar_baz_foo_bar_baz_foo_bar_baz_foo_bar_baz]) - B/op 192 B/op 192 B/op 1
BenchmarkInterfaceSlice/[12]string([foo_bar_baz_foo_bar_baz_foo_bar_baz_foo_bar_baz]) - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkInterfaceSlice/[]interface_{}([[]_[1_2]_3]) 2.207 ns/op 0 B/op 0 allocs/op 2.202 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkInterfaceSlice/[]interface_{}([[]_[1_2]_3]) - ns/op 2.207 ns/op 2.202 ns/op 1.00
BenchmarkInterfaceSlice/[]interface_{}([[]_[1_2]_3]) - B/op 0 B/op 0 B/op 1
BenchmarkInterfaceSlice/[]interface_{}([[]_[1_2]_3]) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkInterfaceSlice/[3]interface_{}([[]_[1_2]_3]) 63.35 ns/op 48 B/op 1 allocs/op 63.17 ns/op 48 B/op 1 allocs/op 1.00
BenchmarkInterfaceSlice/[3]interface_{}([[]_[1_2]_3]) - ns/op 63.35 ns/op 63.17 ns/op 1.00
BenchmarkInterfaceSlice/[3]interface_{}([[]_[1_2]_3]) - B/op 48 B/op 48 B/op 1
BenchmarkInterfaceSlice/[3]interface_{}([[]_[1_2]_3]) - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkToBytes 1044 ns/op 40 B/op 3 allocs/op 1125 ns/op 40 B/op 3 allocs/op 0.93
BenchmarkToBytes - ns/op 1044 ns/op 1125 ns/op 0.93
BenchmarkToBytes - B/op 40 B/op 40 B/op 1
BenchmarkToBytes - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkIsFloat/int(0) 3.101 ns/op 0 B/op 0 allocs/op 3.178 ns/op 0 B/op 0 allocs/op 0.98
BenchmarkIsFloat/int(0) - ns/op 3.101 ns/op 3.178 ns/op 0.98
BenchmarkIsFloat/int(0) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/int(0) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/int(1) 3.125 ns/op 0 B/op 0 allocs/op 3.102 ns/op 0 B/op 0 allocs/op 1.01
BenchmarkIsFloat/int(1) - ns/op 3.125 ns/op 3.102 ns/op 1.01
BenchmarkIsFloat/int(1) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/int(1) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/int(-1) 3.103 ns/op 0 B/op 0 allocs/op 3.135 ns/op 0 B/op 0 allocs/op 0.99
BenchmarkIsFloat/int(-1) - ns/op 3.103 ns/op 3.135 ns/op 0.99
BenchmarkIsFloat/int(-1) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/int(-1) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/uint(42) 3.097 ns/op 0 B/op 0 allocs/op 3.097 ns/op 0 B/op 0 allocs/op 1
BenchmarkIsFloat/uint(42) - ns/op 3.097 ns/op 3.097 ns/op 1
BenchmarkIsFloat/uint(42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/uint(42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/uint8(255) 3.1 ns/op 0 B/op 0 allocs/op 3.097 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/uint8(255) - ns/op 3.1 ns/op 3.097 ns/op 1.00
BenchmarkIsFloat/uint8(255) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/uint8(255) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/uint16(42) 3.099 ns/op 0 B/op 0 allocs/op 3.102 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/uint16(42) - ns/op 3.099 ns/op 3.102 ns/op 1.00
BenchmarkIsFloat/uint16(42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/uint16(42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/uint32(42) 3.102 ns/op 0 B/op 0 allocs/op 3.096 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/uint32(42) - ns/op 3.102 ns/op 3.096 ns/op 1.00
BenchmarkIsFloat/uint32(42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/uint32(42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/uint64(42) 3.118 ns/op 0 B/op 0 allocs/op 3.101 ns/op 0 B/op 0 allocs/op 1.01
BenchmarkIsFloat/uint64(42) - ns/op 3.118 ns/op 3.101 ns/op 1.01
BenchmarkIsFloat/uint64(42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/uint64(42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/int(42) 3.094 ns/op 0 B/op 0 allocs/op 3.101 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/int(42) - ns/op 3.094 ns/op 3.101 ns/op 1.00
BenchmarkIsFloat/int(42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/int(42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/int8(127) 3.1 ns/op 0 B/op 0 allocs/op 3.096 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/int8(127) - ns/op 3.1 ns/op 3.096 ns/op 1.00
BenchmarkIsFloat/int8(127) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/int8(127) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/int16(42) 3.101 ns/op 0 B/op 0 allocs/op 3.102 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/int16(42) - ns/op 3.101 ns/op 3.102 ns/op 1.00
BenchmarkIsFloat/int16(42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/int16(42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/int32(42) 3.097 ns/op 0 B/op 0 allocs/op 3.094 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/int32(42) - ns/op 3.097 ns/op 3.094 ns/op 1.00
BenchmarkIsFloat/int32(42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/int32(42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/int64(42) 3.096 ns/op 0 B/op 0 allocs/op 3.1 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/int64(42) - ns/op 3.096 ns/op 3.1 ns/op 1.00
BenchmarkIsFloat/int64(42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/int64(42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/float32(18.3) 2.479 ns/op 0 B/op 0 allocs/op 2.786 ns/op 0 B/op 0 allocs/op 0.89
BenchmarkIsFloat/float32(18.3) - ns/op 2.479 ns/op 2.786 ns/op 0.89
BenchmarkIsFloat/float32(18.3) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/float32(18.3) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/float64(18.3) 2.787 ns/op 0 B/op 0 allocs/op 2.792 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/float64(18.3) - ns/op 2.787 ns/op 2.792 ns/op 1.00
BenchmarkIsFloat/float64(18.3) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/float64(18.3) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/float64(1.5) 2.789 ns/op 0 B/op 0 allocs/op 2.786 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/float64(1.5) - ns/op 2.789 ns/op 2.786 ns/op 1.00
BenchmarkIsFloat/float64(1.5) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/float64(1.5) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/float64(-18.6) 2.787 ns/op 0 B/op 0 allocs/op 2.789 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/float64(-18.6) - ns/op 2.787 ns/op 2.789 ns/op 1.00
BenchmarkIsFloat/float64(-18.6) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/float64(-18.6) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/string(42) 34.09 ns/op 0 B/op 0 allocs/op 34.1 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/string(42) - ns/op 34.09 ns/op 34.1 ns/op 1.00
BenchmarkIsFloat/string(42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/string(42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/string(052) 38.13 ns/op 0 B/op 0 allocs/op 38.08 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/string(052) - ns/op 38.13 ns/op 38.08 ns/op 1.00
BenchmarkIsFloat/string(052) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/string(052) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/string(0xff) 72.31 ns/op 52 B/op 2 allocs/op 72.28 ns/op 52 B/op 2 allocs/op 1.00
BenchmarkIsFloat/string(0xff) - ns/op 72.31 ns/op 72.28 ns/op 1.00
BenchmarkIsFloat/string(0xff) - B/op 52 B/op 52 B/op 1
BenchmarkIsFloat/string(0xff) - allocs/op 2 allocs/op 2 allocs/op 1
BenchmarkIsFloat/string(-42) 35.64 ns/op 0 B/op 0 allocs/op 35.95 ns/op 0 B/op 0 allocs/op 0.99
BenchmarkIsFloat/string(-42) - ns/op 35.64 ns/op 35.95 ns/op 0.99
BenchmarkIsFloat/string(-42) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/string(-42) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/string(-0) 32.63 ns/op 0 B/op 0 allocs/op 32.63 ns/op 0 B/op 0 allocs/op 1
BenchmarkIsFloat/string(-0) - ns/op 32.63 ns/op 32.63 ns/op 1
BenchmarkIsFloat/string(-0) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/string(-0) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkIsFloat/string(3.14) 104.4 ns/op 56 B/op 3 allocs/op 105.3 ns/op 56 B/op 3 allocs/op 0.99
BenchmarkIsFloat/string(3.14) - ns/op 104.4 ns/op 105.3 ns/op 0.99
BenchmarkIsFloat/string(3.14) - B/op 56 B/op 56 B/op 1
BenchmarkIsFloat/string(3.14) - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkIsFloat/string(-3.14) 112.1 ns/op 64 B/op 3 allocs/op 112.2 ns/op 64 B/op 3 allocs/op 1.00
BenchmarkIsFloat/string(-3.14) - ns/op 112.1 ns/op 112.2 ns/op 1.00
BenchmarkIsFloat/string(-3.14) - B/op 64 B/op 64 B/op 1
BenchmarkIsFloat/string(-3.14) - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkIsFloat/string(0.00) 105.2 ns/op 56 B/op 3 allocs/op 105.8 ns/op 56 B/op 3 allocs/op 0.99
BenchmarkIsFloat/string(0.00) - ns/op 105.2 ns/op 105.8 ns/op 0.99
BenchmarkIsFloat/string(0.00) - B/op 56 B/op 56 B/op 1
BenchmarkIsFloat/string(0.00) - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkIsFloat/string(NaN) 91.91 ns/op 54 B/op 3 allocs/op 93.86 ns/op 54 B/op 3 allocs/op 0.98
BenchmarkIsFloat/string(NaN) - ns/op 91.91 ns/op 93.86 ns/op 0.98
BenchmarkIsFloat/string(NaN) - B/op 54 B/op 54 B/op 1
BenchmarkIsFloat/string(NaN) - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkIsFloat/string(-Inf) 90.68 ns/op 56 B/op 3 allocs/op 92.49 ns/op 56 B/op 3 allocs/op 0.98
BenchmarkIsFloat/string(-Inf) - ns/op 90.68 ns/op 92.49 ns/op 0.98
BenchmarkIsFloat/string(-Inf) - B/op 56 B/op 56 B/op 1
BenchmarkIsFloat/string(-Inf) - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkIsFloat/string(+Inf) 90.79 ns/op 56 B/op 3 allocs/op 93.17 ns/op 56 B/op 3 allocs/op 0.97
BenchmarkIsFloat/string(+Inf) - ns/op 90.79 ns/op 93.17 ns/op 0.97
BenchmarkIsFloat/string(+Inf) - B/op 56 B/op 56 B/op 1
BenchmarkIsFloat/string(+Inf) - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkIsFloat/string() 49.95 ns/op 48 B/op 1 allocs/op 49.84 ns/op 48 B/op 1 allocs/op 1.00
BenchmarkIsFloat/string() - ns/op 49.95 ns/op 49.84 ns/op 1.00
BenchmarkIsFloat/string() - B/op 48 B/op 48 B/op 1
BenchmarkIsFloat/string() - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkIsFloat/string(foo) 72.34 ns/op 51 B/op 2 allocs/op 69.53 ns/op 51 B/op 2 allocs/op 1.04
BenchmarkIsFloat/string(foo) - ns/op 72.34 ns/op 69.53 ns/op 1.04
BenchmarkIsFloat/string(foo) - B/op 51 B/op 51 B/op 1
BenchmarkIsFloat/string(foo) - allocs/op 2 allocs/op 2 allocs/op 1
BenchmarkIsFloat/bool(true) 3.1 ns/op 0 B/op 0 allocs/op 3.097 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkIsFloat/bool(true) - ns/op 3.1 ns/op 3.097 ns/op 1.00
BenchmarkIsFloat/bool(true) - B/op 0 B/op 0 B/op 1
BenchmarkIsFloat/bool(true) - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkLookupIPs 48870 ns/op 1840 B/op 44 allocs/op 50737 ns/op 1840 B/op 44 allocs/op 0.96
BenchmarkLookupIPs - ns/op 48870 ns/op 50737 ns/op 0.96
BenchmarkLookupIPs - B/op 1840 B/op 1840 B/op 1
BenchmarkLookupIPs - allocs/op 44 allocs/op 44 allocs/op 1
BenchmarkIndent 2023 ns/op 2064 B/op 20 allocs/op 1946 ns/op 2064 B/op 20 allocs/op 1.04
BenchmarkIndent - ns/op 2023 ns/op 1946 ns/op 1.04
BenchmarkIndent - B/op 2064 B/op 2064 B/op 1
BenchmarkIndent - allocs/op 20 allocs/op 20 allocs/op 1

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.