aboutsummaryrefslogtreecommitdiff
path: root/src/container
diff options
context:
space:
mode:
authorJason Wangsadinata <jwangsadinata@gmail.com>2017-10-30 23:04:03 +0700
committerIan Lance Taylor <iant@golang.org>2017-10-31 03:52:55 +0000
commit26e49e695f5df063f7f4e33718b22ce1cbc6e533 (patch)
tree460769b85608516cecb257d12d32f115ba15f8fd /src/container
parent94d937178039a8f8754dcba8e1d9d491cb7bebfc (diff)
downloadgo-26e49e695f5df063f7f4e33718b22ce1cbc6e533.tar.gz
go-26e49e695f5df063f7f4e33718b22ce1cbc6e533.zip
container/ring: fix example_test.go
The Len method is a linear operation. CL 73090 used Len to iterate over a ring, resulting in a quadratic time operation. Change-Id: Ib69c19190ba648311e6c345d8cb26292b50121ee Reviewed-on: https://go-review.googlesource.com/74390 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/container')
-rw-r--r--src/container/ring/example_test.go37
1 files changed, 28 insertions, 9 deletions
diff --git a/src/container/ring/example_test.go b/src/container/ring/example_test.go
index ebea1e2713..30bd0d74c9 100644
--- a/src/container/ring/example_test.go
+++ b/src/container/ring/example_test.go
@@ -24,14 +24,17 @@ func ExampleRing_Next() {
// Create a new ring of size 5
r := ring.New(5)
+ // Get the length of the ring
+ n := r.Len()
+
// Initialize the ring with some integer values
- for i := 0; i < r.Len(); i++ {
+ for i := 0; i < n; i++ {
r.Value = i
r = r.Next()
}
// Iterate through the ring and print its contents
- for j := 0; j < r.Len(); j++ {
+ for j := 0; j < n; j++ {
fmt.Println(r.Value)
r = r.Next()
}
@@ -48,14 +51,17 @@ func ExampleRing_Prev() {
// Create a new ring of size 5
r := ring.New(5)
+ // Get the length of the ring
+ n := r.Len()
+
// Initialize the ring with some integer values
- for i := 0; i < r.Len(); i++ {
+ for i := 0; i < n; i++ {
r.Value = i
r = r.Next()
}
// Iterate through the ring backwards and print its contents
- for j := 0; j < r.Len(); j++ {
+ for j := 0; j < n; j++ {
r = r.Prev()
fmt.Println(r.Value)
}
@@ -72,8 +78,11 @@ func ExampleRing_Do() {
// Create a new ring of size 5
r := ring.New(5)
+ // Get the length of the ring
+ n := r.Len()
+
// Initialize the ring with some integer values
- for i := 0; i < r.Len(); i++ {
+ for i := 0; i < n; i++ {
r.Value = i
r = r.Next()
}
@@ -95,8 +104,11 @@ func ExampleRing_Move() {
// Create a new ring of size 5
r := ring.New(5)
+ // Get the length of the ring
+ n := r.Len()
+
// Initialize the ring with some integer values
- for i := 0; i < r.Len(); i++ {
+ for i := 0; i < n; i++ {
r.Value = i
r = r.Next()
}
@@ -122,14 +134,18 @@ func ExampleRing_Link() {
r := ring.New(2)
s := ring.New(2)
+ // Get the length of the ring
+ lr := r.Len()
+ ls := s.Len()
+
// Initialize r with 0s
- for i := 0; i < r.Len(); i++ {
+ for i := 0; i < lr; i++ {
r.Value = 0
r = r.Next()
}
// Initialize s with 1s
- for j := 0; j < s.Len(); j++ {
+ for j := 0; j < ls; j++ {
s.Value = 1
s = s.Next()
}
@@ -153,8 +169,11 @@ func ExampleRing_Unlink() {
// Create a new ring of size 6
r := ring.New(6)
+ // Get the length of the ring
+ n := r.Len()
+
// Initialize the ring with some integer values
- for i := 0; i < r.Len(); i++ {
+ for i := 0; i < n; i++ {
r.Value = i
r = r.Next()
}