zoukankan      html  css  js  c++  java
  • golang切片

    golang切片

    内存拷贝耗费时间

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func kb()  {
    	data := make([]byte, 0)
    	l := 1024
    	for i := 0 ; i < l;i++ {
    		data = append(data, uint8(1))
    	}
    
    	data2 := make([]byte, l, l)
    
    	t := time.Now()
    	copy(data2, data)
    	fmt.Println("KB数据耗费时间为: ", time.Since(t).String())
    }
    
    func mb()  {
    	data := make([]byte, 0)
    	l := 1024 * 1024
    	for i := 0 ; i < l;i++ {
    		data = append(data, uint8(1))
    	}
    
    	data2 := make([]byte, l, l)
    
    	t := time.Now()
    	copy(data2, data)
    	fmt.Println("MB数据耗费时间为: ", time.Since(t).String())
    }
    
    func gb()  {
    	data := make([]byte, 0)
    	l := 1024 * 1024 * 1024
    	for i := 0 ; i < l;i++ {
    		data = append(data, uint8(1))
    	}
    
    	data2 := make([]byte, l, l)
    
    	t := time.Now()
    	copy(data2, data)
    	fmt.Println("GB数据耗费时间为: ", time.Since(t).String())
    }
    
    
    
    func main() {
    	kb()
    	time.Sleep(time.Microsecond * 300)
    
    	mb()
    	time.Sleep(time.Microsecond * 300)
    
    	gb()
    	time.Sleep(time.Microsecond * 300)
    }
    
    

    测试结果

    F:code_megithubevio-master	elnet3>go run main.go
    KB数据耗费时间为:  0s
    MB数据耗费时间为:  516.3µs
    GB数据耗费时间为:  400.2188ms
    
    F:code_megithubevio-master	elnet3>go run main.go
    KB数据耗费时间为:  0s
    MB数据耗费时间为:  0s
    GB数据耗费时间为:  433.0305ms
    
    F:code_megithubevio-master	elnet3>go run main.go
    KB数据耗费时间为:  0s
    MB数据耗费时间为:  0s
    GB数据耗费时间为:  379.715ms
    
    F:code_megithubevio-master	elnet3>go run main.go
    KB数据耗费时间为:  0s
    MB数据耗费时间为:  0s
    GB数据耗费时间为:  377.2188ms
    
    F:code_megithubevio-master	elnet3>go run main.go
    KB数据耗费时间为:  0s
    MB数据耗费时间为:  521.6µs
    GB数据耗费时间为:  123.0336ms
    
    F:code_megithubevio-master	elnet3>go run main.go
    KB数据耗费时间为:  0s
    MB数据耗费时间为:  1.0286ms
    GB数据耗费时间为:  376.8729ms
    

    啪的一下,很快啊

    copy()函数

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	data := make([]byte, 0)
    	l := 10
    	for i :=0; i < l;i++ {
    		data = append(data, uint8(1))
    	}
    
    	tmm := []byte{uint8(2), uint8(3), uint8(3), uint8(3)}
    
    	data = data[3:6]
    	fmt.Println(len(data), cap(data))
    
    	copy(data, tmm)
    	fmt.Println(len(data), cap(data))
    	fmt.Println(data)
    }
    
    
    
    ## 输出
    3 13
    3 13
    [2 3 3]
    
  • 相关阅读:
    树形DP 统计树中长度为K的路径数量——Distance in Tree
    Linux下使用Vi是方向键变乱码 退格键不能使用的解决方法
    wikioi 1029 中序遍历总数
    struts2前端页面读取Clob/BLOB
    hdu 1712 ACboy needs your help
    HDU 2489 Minimal Ratio Tree (dfs+Prim最小生成树)
    用XMLRPC开服务进行server/client通信
    HDU 1171 Big Event in HDU
    VS2012调试执行,网页打不开
    解决安装OpenShift Client Tools时提示的dl/import (LoadError)问题
  • 原文地址:https://www.cnblogs.com/maomaomaoge/p/14967471.html
Copyright © 2011-2022 走看看