小编use*_*005的帖子

在Go中处理读/写udp连接

我需要创建UDP连接,通过它我可以同时写入和读取数据包.(使用不同的goroutine和GOMAXPROCS(n),其中n> 1)首次尝试是这样的:

func new_conn(port, chan_buf int) (conn *net.UDPConn, inbound chan Packet, err error) {
    inbound = make(chan Packet, chan_buf)

    conn, err = net.ListenUDP("udp4", &net.UDPAddr{Port: port})
    if err != nil {return}

    go func () {
        for {
            b := make([]byte, UDP_PACKET_SIZE)
            n, addr, err := conn.ReadFromUDP(b)
            if err != nil {
                log.Printf("Error: UDP read error: %v", err)
                continue
            }
            inbound <- Packet{addr, b[:n]}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以要读取数据包,我使用了packet:= < - inbound并写入conn.WriteTo(data_bytes,remote_addr).但是竞争检测器会在连接上同时读/写时发出警告.所以我重写了这样的代码:

func new_conn(port, chan_buf int) (inbound, …
Run Code Online (Sandbox Code Playgroud)

udp go

7
推荐指数
1
解决办法
7360
查看次数

AVX2指令延迟和吞吐量

我对以下内在函数/指令的性能感兴趣:

  • _mm256_andnot_si256 / vpandn
  • _mm256_and_si256 / vpand
  • _mm256_cmpgt_epi32 / vpcmpgtd
  • 和其他一些。

但是不幸的是,《英特尔Intrinsics指南》没有包含具有这些内在/指令的延迟和吞吐量数字的表。在哪里可以找到此信息?

performance x86 x86-64 simd avx2

6
推荐指数
1
解决办法
221
查看次数

标签 统计

avx2 ×1

go ×1

performance ×1

simd ×1

udp ×1

x86 ×1

x86-64 ×1