TODO: iter call 太多系统内存. 导致效率低下

This commit is contained in:
huangsimin
2019-04-02 18:28:41 +08:00
parent d93208f769
commit f0f16d7516
10 changed files with 169 additions and 136 deletions

View File

@@ -60,10 +60,18 @@ func New() *Stack {
return s
}
func NewWithCap(cap int) *Stack {
s := &Stack{}
s.size = 0
s.top = &Node{elements: make([]interface{}, cap, cap), cur: -1}
return s
}
func (as *Stack) Clear() {
as.size = 0
as.top = &Node{elements: make([]interface{}, 8, 8), cur: -1}
as.cache = nil
as.top.down = nil
as.top.cur = -1
}
func (as *Stack) Empty() bool {

View File

@@ -8,34 +8,34 @@ import (
"github.com/Pallinder/go-randomdata"
)
// func TestPush(t *testing.T) {
// s := New()
// for i := 0; i < 10; i++ {
// v := randomdata.Number(0, 10)
// s.Push(v)
// t.Error(v)
// t.Error(s.String(), " size ", s.size)
// }
func TestPush(t *testing.T) {
s := New()
for i := 0; i < 10; i++ {
v := randomdata.Number(0, 10)
s.Push(v)
t.Error(v)
t.Error(s.String(), " size ", s.size)
}
// t.Error(s.Values())
t.Error(s.Values())
// for i := 0; i < 10; i++ {
// v, ok := s.Pop()
// t.Error(v, ok)
// t.Error(s.String(), " size ", s.size)
// }
for i := 0; i < 10; i++ {
v, ok := s.Pop()
t.Error(v, ok)
t.Error(s.String(), " size ", s.size)
}
// for i := 0; i < 10; i++ {
// v := randomdata.Number(0, 10)
// s.Push(v)
// }
for i := 0; i < 10; i++ {
v := randomdata.Number(0, 10)
s.Push(v)
}
// for i := -1; i < 11; i++ {
// v, ok := s.Get(i)
// t.Error(v, ok)
// }
for i := -1; i < 11; i++ {
v, ok := s.Get(i)
t.Error(v, ok)
}
// }
}
func BenchmarkGet(b *testing.B) {
s := New()