zoukankan      html  css  js  c++  java
  • golang chan 发送接收测试数据

    测试代码:

    package main

    import (
        "fmt"
        "time"
    )

    const (
        num = 10000000  // 测试1千万次发送和接收
    )

    func main() {
        TestChan2()
    }

    func TestChan2() {
        st := time.Now().UnixNano()

        c := make(chan int)

        go func() {
            var n int
            for n = range c {
            }
            fmt.Printf("task TestChan2 cost %d ", (time.Now().UnixNano()-st)/int64(time.Millisecond))
            fmt.Printf("%d", n)

        }()

        for i := 0; i < num; i++ {
            c <- i
        }
        close(c) // 发送完就关闭通道, 接手协程中就会 退出 for range 循环

        // sleep 一段时间,确保接收chan完成
        time.Sleep(3 * time.Second)

    }

    执行结果:

    在一台win7笔记本上测试数据如下:

    2.7到2.9秒执行完发送和接收。

    image

     

    在一台docker虚机上测试的数据如下:

    4.9秒到5.2秒完成

    image

    在一台 linux 物理机上执行结果

    在 3.5-4.1 秒完成

    image 

     

    chan的一些小技巧请看:

    http://my.oschina.net/goskyblue/blog/191149

  • 相关阅读:
    sql中table用法
    sql group by
    C#excel导入
    手写简单JDBC
    连接池+事务
    mysql+jdbc
    mysql(多表)
    jsp标签+jstl
    页面跳转+路径问题
    ajax 动态获取数据库中的值
  • 原文地址:https://www.cnblogs.com/ghj1976/p/4587718.html
Copyright © 2011-2022 走看看