1
0
mirror of https://github.com/golang/go synced 2024-11-23 15:50:07 -07:00

net: use internal/bytealg.CountString

On platforms that provide a native implementation this might be slightly
faster. On other platforms it is equivalent to the count func.

Change-Id: If46cc65598993e64084cc98533cb8c1e9679a6fd
Reviewed-on: https://go-review.googlesource.com/c/go/+/522136
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
This commit is contained in:
Tobias Klauser 2023-08-23 11:22:04 +02:00 committed by Gopher Robot
parent a97f71578f
commit aa0ba4dcaf
3 changed files with 4 additions and 14 deletions

View File

@ -17,6 +17,7 @@ package net
import ( import (
"context" "context"
"errors" "errors"
"internal/bytealg"
"internal/itoa" "internal/itoa"
"io" "io"
"os" "os"
@ -513,7 +514,7 @@ func (conf *dnsConfig) nameList(name string) []string {
return []string{name} return []string{name}
} }
hasNdots := count(name, '.') >= conf.ndots hasNdots := bytealg.CountString(name, '.') >= conf.ndots
name += "." name += "."
l++ l++

View File

@ -83,10 +83,10 @@ func (addrs addrList) forResolve(network, addr string) Addr {
switch network { switch network {
case "ip": case "ip":
// IPv6 literal (addr does NOT contain a port) // IPv6 literal (addr does NOT contain a port)
want6 = count(addr, ':') > 0 want6 = bytealg.CountString(addr, ':') > 0
case "tcp", "udp": case "tcp", "udp":
// IPv6 literal. (addr contains a port, so look for '[') // IPv6 literal. (addr contains a port, so look for '[')
want6 = count(addr, '[') > 0 want6 = bytealg.CountString(addr, '[') > 0
} }
if want6 { if want6 {
return addrs.first(isNotIPv4) return addrs.first(isNotIPv4)

View File

@ -180,17 +180,6 @@ func xtoi2(s string, e byte) (byte, bool) {
return byte(n), ok && ei == 2 return byte(n), ok && ei == 2
} }
// Number of occurrences of b in s.
func count(s string, b byte) int {
n := 0
for i := 0; i < len(s); i++ {
if s[i] == b {
n++
}
}
return n
}
// Index of rightmost occurrence of b in s. // Index of rightmost occurrence of b in s.
func last(s string, b byte) int { func last(s string, b byte) int {
i := len(s) i := len(s)