diff options
| author | Ondřej Surý <ondrej@sury.org> | 2011-09-13 13:11:55 +0200 | 
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2011-09-13 13:11:55 +0200 | 
| commit | 80f18fc933cf3f3e829c5455a1023d69f7b86e52 (patch) | |
| tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /test/bench/reverse-complement.go | |
| parent | 28592ee1ea1f5cdffcf85472f9de0285d928cf12 (diff) | |
| download | golang-80f18fc933cf3f3e829c5455a1023d69f7b86e52.tar.gz | |
Imported Upstream version 60
Diffstat (limited to 'test/bench/reverse-complement.go')
| -rw-r--r-- | test/bench/reverse-complement.go | 105 | 
1 files changed, 0 insertions, 105 deletions
| diff --git a/test/bench/reverse-complement.go b/test/bench/reverse-complement.go deleted file mode 100644 index baa30ffcc..000000000 --- a/test/bench/reverse-complement.go +++ /dev/null @@ -1,105 +0,0 @@ -/* -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -    * Redistributions of source code must retain the above copyright -    notice, this list of conditions and the following disclaimer. - -    * Redistributions in binary form must reproduce the above copyright -    notice, this list of conditions and the following disclaimer in the -    documentation and/or other materials provided with the distribution. - -    * Neither the name of "The Computer Language Benchmarks Game" nor the -    name of "The Computer Language Shootout Benchmarks" nor the names of -    its contributors may be used to endorse or promote products derived -    from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -*/ - -/* The Computer Language Benchmarks Game - * http://shootout.alioth.debian.org/ - * - * contributed by The Go Authors. - */ - -package main - -import ( -	"bufio" -	"os" -) - -const lineSize = 60 - -var complement = [256]uint8{ -	'A': 'T', 'a': 'T', -	'C': 'G', 'c': 'G', -	'G': 'C', 'g': 'C', -	'T': 'A', 't': 'A', -	'U': 'A', 'u': 'A', -	'M': 'K', 'm': 'K', -	'R': 'Y', 'r': 'Y', -	'W': 'W', 'w': 'W', -	'S': 'S', 's': 'S', -	'Y': 'R', 'y': 'R', -	'K': 'M', 'k': 'M', -	'V': 'B', 'v': 'B', -	'H': 'D', 'h': 'D', -	'D': 'H', 'd': 'H', -	'B': 'V', 'b': 'V', -	'N': 'N', 'n': 'N', -} - -func main() { -	in := bufio.NewReader(os.Stdin) -	buf := make([]byte, 1024*1024) -	line, err := in.ReadSlice('\n') -	for err == nil { -		os.Stdout.Write(line) - -		// Accumulate reversed complement in buf[w:] -		nchar := 0 -		w := len(buf) -		for { -			line, err = in.ReadSlice('\n') -			if err != nil || line[0] == '>' { -				break -			} -			line = line[0 : len(line)-1] -			nchar += len(line) -			if len(line)+nchar/60+128 >= w { -				nbuf := make([]byte, len(buf)*5) -				copy(nbuf[len(nbuf)-len(buf):], buf) -				w += len(nbuf) - len(buf) -				buf = nbuf -			} - -			// This loop is the bottleneck. -			for _, c := range line { -				w-- -				buf[w] = complement[c] -			} -		} - -		// Copy down to beginning of buffer, inserting newlines. -		// The loop left room for the newlines and 128 bytes of padding. -		i := 0 -		for j := w; j < len(buf); j += 60 { -			n := copy(buf[i:i+60], buf[j:]) -			buf[i+n] = '\n' -			i += n + 1 -		} -		os.Stdout.Write(buf[0:i]) -	} -} | 
