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]
    
  • 相关阅读:
    环境搭建:Vue环境搭建和项目初始化(windows)
    文件扩展关联命令
    关闭任务栏上右键的打开历史记录
    CDN基本原理和功能浅析
    制作支持UEFI启动的原装系统安装盘
    文件被占用如何查看
    BIOS和CMOS的区别
    PKI公钥基础设施简介
    网络安全通信https工作原理
    常见加密算法简介
  • 原文地址:https://www.cnblogs.com/maomaomaoge/p/14967471.html
Copyright © 2011-2022 走看看