@cryptotaxi247 / kubo / commits / 6602dd704

refactor: prealloc slices with known sizes (#8892)

Often those are small slices and that cuts down the number of (small) allocations from 2~7 to 1. This is consistent too, always only gets 1.

Jorropo committed Jun 24, 2022 at 22:19 UTC 6602dd704e9b9414de3828adea68b05ad5078c81
5 files changed +20 -19
cmd/ipfs/daemon.go
+7 -6
@@ -704,22 +704,23 @@ func printSwarmAddrs(node *core.IpfsNode) {
704 return
705 }
706
707 - var lisAddrs []string
707 ifaceAddrs, err := node.PeerHost.Network().InterfaceListenAddresses()
708 if err != nil {
709 log.Errorf("failed to read listening addresses: %s", err)
710 }
712 - for _, addr := range ifaceAddrs {
713 - lisAddrs = append(lisAddrs, addr.String())
711 + lisAddrs := make([]string, len(ifaceAddrs))
712 + for i, addr := range ifaceAddrs {
713 + lisAddrs[i] = addr.String()
714 }
715 sort.Strings(lisAddrs)
716 for _, addr := range lisAddrs {
717 fmt.Printf("Swarm listening on %s\n", addr)
718 }
719
720 - var addrs []string
721 - for _, addr := range node.PeerHost.Addrs() {
722 - addrs = append(addrs, addr.String())
720 + nodePhostAddrs := node.PeerHost.Addrs()
721 + addrs := make([]string, len(nodePhostAddrs))
722 + for i, addr := range nodePhostAddrs {
723 + addrs[i] = addr.String()
724 }
725 sort.Strings(addrs)
726 for _, addr := range addrs {
core/commands/sysdiag.go
+3 -3
@@ -134,9 +134,9 @@ func netInfo(online bool, out map[string]interface{}) error {
134 return err
135 }
136
137 - var straddrs []string
138 - for _, a := range addrs {
139 - straddrs = append(straddrs, a.String())
137 + straddrs := make([]string, len(addrs))
138 + for i, a := range addrs {
139 + straddrs[i] = a.String()
140 }
141
142 n["interface_addresses"] = straddrs
core/node/libp2p/addrs.go
+3 -3
@@ -100,13 +100,13 @@ func AddrsFactory(announce []string, appendAnnouce []string, noAnnounce []string
100 }
101
102 func listenAddresses(addresses []string) ([]ma.Multiaddr, error) {
103 - var listen []ma.Multiaddr
104 - for _, addr := range addresses {
103 + listen := make([]ma.Multiaddr, len(addresses))
104 + for i, addr := range addresses {
105 maddr, err := ma.NewMultiaddr(addr)
106 if err != nil {
107 return nil, fmt.Errorf("failure to parse config.Addresses.Swarm: %s", addresses)
108 }
109 - listen = append(listen, maddr)
109 + listen[i] = maddr
110 }
111
112 return listen, nil
fuse/ipns/ipns_unix.go
+4 -4
@@ -216,7 +216,7 @@ func (r *Root) Forget() {
216 func (r *Root) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error) {
217 log.Debug("Root ReadDirAll")
218
219 - var listing []fuse.Dirent
219 + listing := make([]fuse.Dirent, 0, len(r.Keys)*2)
220 for alias, k := range r.Keys {
221 ent := fuse.Dirent{
222 Name: k.ID().Pretty(),
@@ -291,12 +291,12 @@ func (s *Directory) Lookup(ctx context.Context, name string) (fs.Node, error) {
291
292 // ReadDirAll reads the link structure as directory entries
293 func (dir *Directory) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error) {
294 - var entries []fuse.Dirent
294 listing, err := dir.dir.List(ctx)
295 if err != nil {
296 return nil, err
297 }
299 - for _, entry := range listing {
298 + entries := make([]fuse.Dirent, len(listing))
299 + for i, entry := range listing {
300 dirent := fuse.Dirent{Name: entry.Name}
301
302 switch mfs.NodeType(entry.Type) {
@@ -306,7 +306,7 @@ func (dir *Directory) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error) {
306 dirent.Type = fuse.DT_File
307 }
308
309 - entries = append(entries, dirent)
309 + entries[i] = dirent
310 }
311
312 if len(entries) > 0 {
profile/profile.go
+3 -3
@@ -125,13 +125,13 @@ func (p *profiler) runProfile(ctx context.Context) error {
125 ctx, cancelFn := context.WithCancel(ctx)
126 defer cancelFn()
127
128 - var collectorsToRun []collector
129 - for _, name := range p.opts.Collectors {
128 + collectorsToRun := make([]collector, len(p.opts.Collectors))
129 + for i, name := range p.opts.Collectors {
130 c, ok := collectors[name]
131 if !ok {
132 return fmt.Errorf("unknown collector '%s'", name)
133 }
134 - collectorsToRun = append(collectorsToRun, c)
134 + collectorsToRun[i] = c
135 }
136
137 results := make(chan profileResult, len(p.opts.Collectors))