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]
    
  • 相关阅读:
    Flexbox 可视化属性
    latex 数学公式
    迭代器模式 rx 应用
    小程序开发 easy-less 配置
    react-devtool 消息处理渲染 源码理解
    csrf jsonp
    koa1 源码详解1
    Immutable api example
    es6 ajax
    lodash 替换 underscore
  • 原文地址:https://www.cnblogs.com/maomaomaoge/p/14967471.html
Copyright © 2011-2022 走看看