来源:未知 时间:2018-08-31 17:36 作者:小飞侠 阅读:次
[导读] 一 · 比较slice 与 list 遍历创建和添加元素速度。 packagemainimport(timefmtcontainer/list)funcmain(){t:=time.Now()sli:=make([]int,10)fori:=0;i1*100000*1000;i++{sli=append(sli,1)}fmt.Println(slice创建速度:+time.Now().Sub...
|
一 · 比较slice 与 list 遍历创建和添加元素速度。 package main
import (
"time"
"fmt"
"container/list"
)
func main() {
t := time.Now()
sli:=make([]int ,10)
for i := 0; i<1*100000*1000;i++ {
sli=append(sli, 1)
}
fmt.Println("slice 创建速度:" + time.Now().Sub(t).String())
t = time.Now()
l:=list.New()
for i := 0; i<1*100000*1000;i++ {
l.PushBack(1)
}
fmt.Println("list 创建速度: " + time.Now().Sub(t).String())本机运行结果: 声明:测试结果为个人电脑的测试结果,仅供参考。 slice 创建速度:1.3029245s list 创建速度: 9.7489181s 对于1亿条数据,slice 的创建和添加元素的速度约是list的7~8倍。 二 · 比较list和slice的遍历速度 package main
import (
"time"
"fmt"
"container/list"
)
func main() {
sli:=make([]int ,10)
for i := 0; i<1*100000*1000;i++ {
sli=append(sli, 1)
}
l:=list.New()
for i := 0; i<1*100000*1000;i++ {
l.PushBack(1)
}
// 比较遍历
t := time.Now()
for _,_ = range sli {
//fmt.Printf("values[%d]=%d\n", i, item)
}
fmt.Println("遍历slice的速度:" + time.Now().Sub(t).String())
t = time.Now()
for e := l.Front(); e != nil; e = e.Next() {
//fmt.Println(e.Value)
}
fmt.Println("遍历list的速度:" + time.Now().Sub(t).String())
}本机运行结果: 遍历slice的速度:32.0235ms 遍历list的速度:480.3413ms 对于1亿条数据来讲slice 遍历速度约是list的速度的15倍。 三 · 比较list和slice的插入速度 package main
import (
"time"
"fmt"
"container/list"
)
func main() {
sli:=make([]int ,10)
for i := 0; i<1*100000*1000;i++ {
sli=append(sli, 1)
}
l:=list.New()
for i := 0; i<1*100000*1000;i++ {
l.PushBack(1)
}
//比较插入
t := time.Now()
slif:=sli[:100000*500]
slib:=sli[100000*500:]
slif=append(slif, 10)
slif=append(slif, slib...)
fmt.Println("slice 的插入速度" + time.Now().Sub(t).String())
var em *list.Element
len:=l.Len()
var i int
for e := l.Front(); e != nil; e = e.Next() {
i++
if i ==len/2 {
em=e
break
}
}
//忽略掉找中间元素的速度。
t = time.Now()
ef:=l.PushBack(2)
l.MoveBefore(ef,em)
fmt.Println("list: " + time.Now().Sub(t).String())
}本机运行结果: slice 的插入速度79.054ms list 的插入速度 : 0s list的插入结果约是list 的”无穷”倍…… 总结:对于很多数据来讲:频繁的插入和删除用list,频繁的遍历查询选slice。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com