OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [runtime/] [append_test.go] - Rev 747

Compare with Previous | Blame | View Log

// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package runtime_test

import "testing"

const N = 20

func BenchmarkAppend(b *testing.B) {
        b.StopTimer()
        x := make([]int, 0, N)
        b.StartTimer()
        for i := 0; i < b.N; i++ {
                x = x[0:0]
                for j := 0; j < N; j++ {
                        x = append(x, j)
                }
        }
}

func BenchmarkAppendSpecialCase(b *testing.B) {
        b.StopTimer()
        x := make([]int, 0, N)
        b.StartTimer()
        for i := 0; i < b.N; i++ {
                x = x[0:0]
                for j := 0; j < N; j++ {
                        if len(x) < cap(x) {
                                x = x[:len(x)+1]
                                x[len(x)-1] = j
                        } else {
                                x = append(x, j)
                        }
                }
        }
}

var x []int

func f() int {
        x[:1][0] = 3
        return 2
}

func TestSideEffectOrder(t *testing.T) {
        x = make([]int, 0, 10)
        x = append(x, 1, f())
        if x[0] != 1 || x[1] != 2 {
                t.Error("append failed: ", x[0], x[1])
        }
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.