diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2016-01-23 10:28:10 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2016-01-23 10:32:26 +0000 |
commit | 4b0ebae56a402b27a2c2cd3e7d065b733f0004bc (patch) | |
tree | a4d72e6cbf14a7862cbb47ef0d7cd9624758d2d5 /test/js/js-primes.html | |
parent | 5b422a3ec9b8ceaa9107374f1be3439f23baf0df (diff) | |
download | netsurf-4b0ebae56a402b27a2c2cd3e7d065b733f0004bc.tar.gz netsurf-4b0ebae56a402b27a2c2cd3e7d065b733f0004bc.tar.bz2 |
Add a couple of general JS tests.
The primes one prints its execution time:
NetSurf without -v: 1300ish
with -v: 5000ish
Firefox 38.5.0: 300ish
Diffstat (limited to 'test/js/js-primes.html')
-rw-r--r-- | test/js/js-primes.html | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/test/js/js-primes.html b/test/js/js-primes.html new file mode 100644 index 000000000..876694a4c --- /dev/null +++ b/test/js/js-primes.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<html> +<head> +<title>How many bit-reversed primes are prime?</title> +</head> +<body> +<pre> +<script> +var start = new Date().getTime(); + +// Add the lpad method to Strings, for adding left padding +String.prototype.lpad = function(padString, length) { + var str = this; + while (str.length < length) + str = padString + str; + return str; +} + +// Naive prime checker +function is_prime(n) +{ + for (var i = 2; i <= n/2; i++) { + if (n % i === 0) { + return false; + } + } + return true; +} + +// Bit reversal +function bit_reverse(num) +{ + var rev = 0; + while (num > 0) { + rev <<= 1; + rev |= (num & 1); + num >>= 1; + } + return rev; +} + +for (var num = 1; num < 10000; num++) { + var rev = bit_reverse(num); + var num_prime = is_prime(num); + var rev_prime = is_prime(rev); + + document.write(num.toString().lpad(" ", 7) + " "); + document.write(num_prime ? "Prime" : " "); + document.write(" "); + + document.write(rev.toString().lpad(" ", 7) + " "); + document.write(rev_prime ? "Prime" : " "); + document.write(" "); + + document.write(num_prime && rev_prime ? "(both)" : ""); + document.write("\n"); +} + +var end = new Date().getTime(); +var time = end - start; +document.write('Execution time: ' + time + '\n'); + +</script> +</pre> +</body> +</html> |