X7ROOT File Manager
Current Path:
/opt/golang/1.17.2/test/bench/go1
opt
/
golang
/
1.17.2
/
test
/
bench
/
go1
/
📁
..
📄
binarytree_test.go
(1.57 KB)
📄
fannkuch_test.go
(1.47 KB)
📄
fasta_test.go
(3.7 KB)
📄
fmt_test.go
(1.36 KB)
📄
go.mod
(31 B)
📄
gob_test.go
(1.75 KB)
📄
gzip_test.go
(1.01 KB)
📄
http_test.go
(949 B)
📄
json_test.go
(1.61 KB)
📄
jsondata_test.go
(115.1 KB)
📄
mandel_test.go
(848 B)
📄
parser_test.go
(888 B)
📄
parserdata_test.go
(19 KB)
📄
regexp_test.go
(1.64 KB)
📄
revcomp_test.go
(1.75 KB)
📄
template_test.go
(1.41 KB)
📄
time_test.go
(516 B)
Editing: fannkuch_test.go
// 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. // This benchmark, taken from the shootout, tests array indexing // and array bounds elimination performance. package go1 import "testing" func fannkuch(n int) int { if n < 1 { return 0 } n1 := n - 1 perm := make([]int, n) perm1 := make([]int, n) count := make([]int, n) for i := 0; i < n; i++ { perm1[i] = i // initial (trivial) permutation } r := n didpr := 0 flipsMax := 0 for { if didpr < 30 { didpr++ } for ; r != 1; r-- { count[r-1] = r } if perm1[0] != 0 && perm1[n1] != n1 { flips := 0 for i := 1; i < n; i++ { // perm = perm1 perm[i] = perm1[i] } k := perm1[0] // cache perm[0] in k for { // k!=0 ==> k>0 for i, j := 1, k-1; i < j; i, j = i+1, j-1 { perm[i], perm[j] = perm[j], perm[i] } flips++ // Now exchange k (caching perm[0]) and perm[k]... with care! j := perm[k] perm[k] = k k = j if k == 0 { break } } if flipsMax < flips { flipsMax = flips } } for ; r < n; r++ { // rotate down perm[0..r] by one perm0 := perm1[0] for i := 0; i < r; i++ { perm1[i] = perm1[i+1] } perm1[r] = perm0 count[r]-- if count[r] > 0 { break } } if r == n { return flipsMax } } return 0 } func BenchmarkFannkuch11(b *testing.B) { for i := 0; i < b.N; i++ { fannkuch(11) } }
Upload File
Create Folder