123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <!DOCTYPE html>
- <head>
- <!--
- Copyright (C) 2007 Apple Inc. All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. 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.
- THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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.
- -->
- <title>SunSpider string-fasta</title>
- </head>
- <body>
- <h3>string-fasta</h3>
- <div id="console">
- </div>
- <script>
- var _sunSpiderStartDate = new Date();
- // The Great Computer Language Shootout
- // http://shootout.alioth.debian.org
- //
- // Contributed by Ian Osgood
- var last = 42, A = 3877, C = 29573, M = 139968;
- function rand(max) {
- last = (last * A + C) % M;
- return max * last / M;
- }
- var ALU =
- "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +
- "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +
- "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" +
- "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" +
- "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" +
- "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" +
- "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";
- var IUB = {
- a:0.27, c:0.12, g:0.12, t:0.27,
- B:0.02, D:0.02, H:0.02, K:0.02,
- M:0.02, N:0.02, R:0.02, S:0.02,
- V:0.02, W:0.02, Y:0.02
- }
- var HomoSap = {
- a: 0.3029549426680,
- c: 0.1979883004921,
- g: 0.1975473066391,
- t: 0.3015094502008
- }
- function makeCumulative(table) {
- var last = null;
- for (var c in table) {
- if (last) table[c] += table[last];
- last = c;
- }
- }
- function fastaRepeat(n, seq) {
- var seqi = 0, lenOut = 60;
- while (n>0) {
- if (n<lenOut) lenOut = n;
- if (seqi + lenOut < seq.length) {
- ret = seq.substring(seqi, seqi+lenOut);
- seqi += lenOut;
- } else {
- var s = seq.substring(seqi);
- seqi = lenOut - s.length;
- ret = s + seq.substring(0, seqi);
- }
- n -= lenOut;
- }
- }
- function fastaRandom(n, table) {
- var line = new Array(60);
- makeCumulative(table);
- while (n>0) {
- if (n<line.length) line = new Array(n);
- for (var i=0; i<line.length; i++) {
- var r = rand(1);
- for (var c in table) {
- if (r < table[c]) {
- line[i] = c;
- break;
- }
- }
- }
- ret = line.join('');
- n -= line.length;
- }
- }
- var ret;
- var count = 7;
- ret = fastaRepeat(2*count*100000, ALU);
- ret = fastaRandom(3*count*1000, IUB);
- ret = fastaRandom(5*count*1000, HomoSap);
- var _sunSpiderInterval = new Date() - _sunSpiderStartDate;
- document.getElementById("console").innerHTML = _sunSpiderInterval;
- </script>
- </body>
- </html>
|