fi
cp gwion ..
- - uses: actions/cache@v1
- if: "!contains(github.event.head_commit.message, '[skip benchmark]')"
- name: Wren [ cache ]
- id: wren
- with:
- path: wren
- key: ${{ runner.os }}-wren
-
- - name: wren [ init ]
- if: "!contains(github.event.head_commit.message, '[skip benchmark]') && steps.wren.outputs.cache-hit != 'true'"
- run: |
- git clone https://github.com/wren-lang/wren
- cd wren/projects/make
- make
-
- - name: wren [ update ]
- if: "!contains(github.event.head_commit.message, '[skip benchmark]') && steps.wren.outputs.cache-hit == 'true'"
- run: |
- cd wren
- if [ $(git rev-parse HEAD) != $(git ls-remote https://github.com/wren-lang/wren.git HEAD | cut -f1) ]
- then
- git pull
- cd projects/make
- make
- fi
-
- - name: wren [ install ]
- if: "!contains(github.event.head_commit.message, '[skip benchmark]')"
- run: cp wren/bin/wren_test wren/bin/wren
-
- - uses: actions/cache@v1
- if: "!contains(github.event.head_commit.message, '[skip benchmark]')"
- name: Lua [ cache ]
- id: lua
- with:
- path: lua
- key: ${{ runner.os }}-lua
-
- - name: Lua [ init ]
- if: "!contains(github.event.head_commit.message, '[skip benchmark]') && steps.lua.outputs.cache-hit != 'true'"
- run: |
- git clone https://github.com/lua/lua
- cd lua
- sudo apt-get install libreadline-dev
- make
-
- - name: Lua [ update ]
- if: "!contains(github.event.head_commit.message, '[skip benchmark]') && steps.lua.outputs.cache-hit == 'true'"
- run: |
- cd lua
- if [ $(git rev-parse HEAD) != $(git ls-remote https://github.com/lua/lua.git HEAD | cut -f1) ]
- then
- git pull
- sudo apt-get install libreadline-dev
- make
- fi
-
- - name: Benchmark
- if: "!contains(github.event.head_commit.message, '[skip benchmark]')"
- run: |
- echo 1 | sudo tee /proc/sys/kernel/perf_event_paranoid
- sudo apt-get update
- sudo apt-get install gnuplot chuck
- echo 'chuck --silent $@' > ./chuck
- chmod +x ./chuck
- export PATH=./wren/bin:$PATH
- export PATH=./lua:$PATH
- export PATH=./mdr:$PATH
- export PATH=./Gwion:$PATH
- export PATH=.:$PATH
- bash scripts/benchmark.sh
-
- uses: fennecdjay/emojify-docker-action@v2
name: Emojify
with:
+++ /dev/null
-// Ported from the Python version.
-
-class Tree {
- construct new(item, depth) {
- _item = item
- if (depth > 0) {
- var item2 = item + item
- depth = depth - 1
- _left = Tree.new(item2 - 1, depth)
- _right = Tree.new(item2, depth)
- }
- }
-
- check {
- if (_left == null) {
- return _item
- }
-
- return _item + _left.check - _right.check
- }
-}
-
-var minDepth = 4
-var maxDepth = 12
-var stretchDepth = maxDepth + 1
-
-System.print("stretch tree of depth %(stretchDepth) check: " +
- "%(Tree.new(0, stretchDepth).check)")
-for (i in 1...1000) System.gc()
-
-var longLivedTree = Tree.new(0, maxDepth)
-
-// iterations = 2 ** maxDepth
-var iterations = 1
-for (d in 0...maxDepth) {
- iterations = iterations * 2
-}
-
-var depth = minDepth
-while (depth < stretchDepth) {
- var check = 0
- for (i in 1..iterations) {
- check = check + Tree.new(i, depth).check + Tree.new(-i, depth).check
- }
-
- System.print("%(iterations * 2) trees of depth %(depth) check: %(check)")
- for (i in 1...1000) System.gc()
-
- iterations = iterations / 4
- depth = depth + 2
-}
-
-System.print(
- "long lived tree of depth %(maxDepth) check: %(longLivedTree.check)")
-for (i in 1...1000) System.gc()
+++ /dev/null
-class Tree {
- int item;
- Tree @ left, right;
-
- fun static Tree new_Tree(int it, int depth) {
- Tree t;
- it => t.item;
- if (depth > 0) {
- it + it => int item2;
- --depth;
- new_Tree(item2 - 1, depth) @=> t.left;
- new_Tree(item2, depth) @=> t.right;
- }
- return t;
- }
-
- fun int check() {
- if (left == NULL)
- return item;
- return item + left.check() - right.check();
- }
-}
-
-4 => int minDepth;
-12 => int maxDepth;
-maxDepth + 1 => int stretchDepth;
-
-<<< "stretch tree of depth ", stretchDepth, " check: ",
- Tree.new_Tree(0, stretchDepth).check() >>>;
-
-Tree.new_Tree(0, maxDepth) @=> Tree @ longLivedTree;
-
-1 => int iterations;
-for (int d; d < maxDepth; ++d)
- 2 *=> iterations;
-
-minDepth => int depth;
-while (depth < stretchDepth) {
- int check;
- for (int i; i < iterations; ++i)
- Tree.new_Tree(i, depth).check() + Tree.new_Tree(-i, depth).check() +=> check;
-
- <<< iterations * 2, " trees of depth ", depth, " check: ", check >>>;
- 4 /=> iterations;
- 2 +=> depth;
-}
-
-<<< "long lived tree of depth ", maxDepth, " check: ", longLivedTree.check() >>>;
+++ /dev/null
-// Ported from the Wren version.
-
-class Tree {
- var _item;
- var _left;
- var _right;
-
- Tree(item, depth) {
- _item = item;
- if (depth > 0) {
- var item2 = item + item;
- depth--;
- _left = new Tree(item2 - 1, depth);
- _right = new Tree(item2, depth);
- }
- }
-
- get check {
- if (_left == null) {
- return _item;
- }
-
- return _item + _left.check - _right.check;
- }
-}
-
-main() {
- var minDepth = 4;
- var maxDepth = 12;
- var stretchDepth = maxDepth + 1;
-
- print("stretch tree of depth ${stretchDepth} check: "
- "${new Tree(0, stretchDepth).check}");
-
- var longLivedTree = new Tree(0, maxDepth);
-
- // iterations = 2 ** maxDepth
- var iterations = 1;
- for (var d = 0; d < maxDepth; d++) {
- iterations = iterations * 2;
- }
-
- var depth = minDepth;
- while (depth < stretchDepth) {
- var check = 0;
- for (var i = 1; i <= iterations; i++) {
- check += new Tree(i, depth).check + new Tree(-i, depth).check;
- }
-
- print("${iterations * 2} trees of depth ${depth} check: ${check}");
- iterations ~/= 4;
- depth += 2;
- }
-
- print("long lived tree of depth ${maxDepth} check: ${longLivedTree.check}");
-}
+++ /dev/null
-#! Ported from the Wren version.
-
-class Tree {
- int item;
- Tree ref left, right;
-
- fun static Tree new_Tree(int it, int depth) {
- Tree t;
- it => t.item;
- if (depth > 0) {
- it + it => int item2;
- --depth;
- new_Tree(item2 - 1, depth) @=> t.left;
- new_Tree(item2, depth) @=> t.right;
- }
- return t;
- }
-
- fun int check() {
- if (!left)
- return item;
- return item + left.check() - right.check();
- }
-}
-
-4 => int minDepth;
-12 => int maxDepth;
-maxDepth + 1 => int stretchDepth;
-
-<<< "stretch tree of depth ", stretchDepth, " check: ",
- Tree.new_Tree(0, stretchDepth).check() >>>;
-
-Tree.new_Tree(0, maxDepth) @=> Tree ref longLivedTree;
-
-#! iterations = 2 ** maxDepth
-1 => int iterations;
-for (int d; d < maxDepth; ++d)
- 2 *=> iterations;
-
-minDepth => int depth;
-while (depth < stretchDepth) {
- int check;
- for (int i; i < iterations; ++i)
- Tree.new_Tree(i, depth).check() + Tree.new_Tree(-i, depth).check() +=> check;
-
- <<< iterations * 2, " trees of depth ", depth, " check: ", check >>>;
- 4 /=> iterations;
- 2 +=> depth;
-}
-
-<<< "long lived tree of depth ", maxDepth, " check: ", longLivedTree.check() >>>;
+++ /dev/null
--- The Computer Language Benchmarks Game
--- http://shootout.alioth.debian.org/
--- contributed by Mike Pall
-
-local function BottomUpTree(item, depth)
- if depth > 0 then
- local i = item + item
- depth = depth - 1
- local left, right = BottomUpTree(i-1, depth), BottomUpTree(i, depth)
- return { item, left, right }
- else
- return { item }
- end
-end
-
-local function ItemCheck(tree)
- if tree[2] then
- return tree[1] + ItemCheck(tree[2]) - ItemCheck(tree[3])
- else
- return tree[1]
- end
-end
-
-local N = 12
-local mindepth = 4
-local maxdepth = mindepth + 2
-if maxdepth < N then maxdepth = N end
-
-do
- local stretchdepth = maxdepth + 1
- local stretchtree = BottomUpTree(0, stretchdepth)
- io.write(string.format("stretch tree of depth %d check: %d\n",
- stretchdepth, ItemCheck(stretchtree)))
-end
-
-local longlivedtree = BottomUpTree(0, maxdepth)
-
-for depth=mindepth,maxdepth,2 do
- local iterations = 2 ^ (maxdepth - depth + mindepth)
- local check = 0
- for i=1,iterations do
- check = check + ItemCheck(BottomUpTree(1, depth)) +
- ItemCheck(BottomUpTree(-1, depth))
- end
- io.write(string.format("%d trees of depth %d check: %d\n",
- iterations*2, depth, check))
-end
-
-io.write(string.format("long lived tree of depth %d check: %d\n",
- maxdepth, ItemCheck(longlivedtree)))
+++ /dev/null
-# The Computer Language Benchmarks Game
-# http://shootout.alioth.debian.org/
-#
-# contributed by Antoine Pitrou
-# modified by Dominique Wahli
-# modified by Heinrich Acker
-from __future__ import print_function
-
-# Map "range" to an efficient range in both Python 2 and 3.
-try:
- range = xrange
-except NameError:
- pass
-
-def make_tree(item, depth):
- if not depth: return item, None, None
- item2 = item + item
- depth -= 1
- return item, make_tree(item2 - 1, depth), make_tree(item2, depth)
-
-def check_tree(node):
- item, left, right = node
- if not left: return item
- return item + check_tree(left) - check_tree(right)
-
-min_depth = 4
-max_depth = 12
-stretch_depth = max_depth + 1
-
-print("stretch tree of depth %d check:" % stretch_depth, check_tree(make_tree(0, stretch_depth)))
-
-long_lived_tree = make_tree(0, max_depth)
-
-iterations = 2 ** max_depth
-for depth in range(min_depth, stretch_depth, 2):
-
- check = 0
- for i in range(1, iterations + 1):
- check += check_tree(make_tree(i, depth)) + check_tree(make_tree(-i, depth))
-
- print("%d trees of depth %d check:" % (iterations * 2, depth), check)
- iterations //= 4
-
-print("long lived tree of depth %d check:" % max_depth, check_tree(long_lived_tree))
+++ /dev/null
-# The Computer Language Shootout Benchmarks
-# http://shootout.alioth.debian.org
-#
-# contributed by Jesse Millikan
-# Modified by Wesley Moxam
-
-
-def item_check(left, item, right)
- return item if left.nil?
- item + item_check(*left) - item_check(*right)
-end
-
-def bottom_up_tree(item, depth)
- return [nil, item, nil] unless depth > 0
- item_item = 2 * item
- depth -= 1
- [bottom_up_tree(item_item - 1, depth), item, bottom_up_tree(item_item, depth)]
-end
-
-max_depth = 12
-min_depth = 4
-
-max_depth = min_depth + 2 if min_depth + 2 > max_depth
-
-stretch_depth = max_depth + 1
-stretch_tree = bottom_up_tree(0, stretch_depth)
-
-puts "stretch tree of depth #{stretch_depth} check: #{item_check(*stretch_tree)}"
-stretch_tree = nil
-
-long_lived_tree = bottom_up_tree(0, max_depth)
-
-min_depth.step(max_depth + 1, 2) do |depth|
- iterations = 2**(max_depth - depth + min_depth)
-
- check = 0
-
- for i in 1..iterations
- temp_tree = bottom_up_tree(i, depth)
- check += item_check(*temp_tree)
-
- temp_tree = bottom_up_tree(-i, depth)
- check += item_check(*temp_tree)
- end
-
- puts "#{iterations * 2} trees of depth #{depth} check: #{check}"
-end
-
-puts "long lived tree of depth #{max_depth} check: #{item_check(*long_lived_tree)}"
+++ /dev/null
-// Ported from the Python version.
-
-class Tree {
- construct new(item, depth) {
- _item = item
- if (depth > 0) {
- var item2 = item + item
- depth = depth - 1
- _left = Tree.new(item2 - 1, depth)
- _right = Tree.new(item2, depth)
- }
- }
-
- check {
- if (_left == null) {
- return _item
- }
-
- return _item + _left.check - _right.check
- }
-}
-
-var minDepth = 4
-var maxDepth = 12
-var stretchDepth = maxDepth + 1
-
-System.print("stretch tree of depth %(stretchDepth) check: " +
- "%(Tree.new(0, stretchDepth).check)")
-
-var longLivedTree = Tree.new(0, maxDepth)
-
-// iterations = 2 ** maxDepth
-var iterations = 1
-for (d in 0...maxDepth) {
- iterations = iterations * 2
-}
-
-var depth = minDepth
-while (depth < stretchDepth) {
- var check = 0
- for (i in 1..iterations) {
- check = check + Tree.new(i, depth).check + Tree.new(-i, depth).check
- }
-
- System.print("%(iterations * 2) trees of depth %(depth) check: %(check)")
- iterations = iterations / 4
- depth = depth + 2
-}
-
-System.print(
- "long lived tree of depth %(maxDepth) check: %(longLivedTree.check)")
+++ /dev/null
-//int count = 0;
-fun int recursive_fib(int n)
-{
-// ++count;
- if (n < 2)
- return n;
- else
- return recursive_fib(n - 2) + recursive_fib(n - 1);
-}
-<<<recursive_fib(40)>>>;
+++ /dev/null
-fun int recursive_fib(int n) {
- if (n < 2)
- return n;
- else
- return recursive_fib(n - 2) + recursive_fib(n - 1);
-}
-<<< 40 => recursive_fib >>>;
+++ /dev/null
-fib :: Int -> Int
-fib n
- | n < 2 = n
- | otherwise = (fib (n-2)) + (fib (n-1))
-
-main = print $ fib 40
+++ /dev/null
-local function fib(n)
- if n < 2 then return n end
- return fib(n - 1) + fib(n - 2)
-end
-
-print(fib(40))
+++ /dev/null
-def fibonacci_recurs(n):
- if n < 2:
- return n;
- else:
- return (fibonacci_recurs(n-1) + fibonacci_recurs(n-2))
-
-print(fibonacci_recurs(40))
+++ /dev/null
-def fibonacci_recurs( n )
- if n < 2 then return n end
- return ( fibonacci_recurs( n - 1 ) + fibonacci_recurs( n - 2 ) )
-end
-puts fibonacci_recurs(40)
+++ /dev/null
-class Fib {
- static get(n) {
- if (n < 2) return n
- return get(n - 1) + get(n - 2)
- }
-}
-
-System.print(Fib.get(40))
+++ /dev/null
-class Fib {
- fun static int get(int n) {
- if (n < 2) return n;
- return get(n - 1) + get(n - 2);
- }
-}
-repeat(5)
- <<< Fib.get(28) >>>;
+++ /dev/null
-fib(n) {
- if (n < 2) return n;
- return fib(n - 1) + fib(n - 2);
-}
-
-main() {
- for (var i = 0; i < 5; i++) {
- print(fib(28));
- }
-}
+++ /dev/null
-function fib(n)
- if n < 2 then return n end
- return fib(n - 2) + fib(n - 1)
-end
-
-for i = 1, 5 do
- io.write(fib(28) .. "\n")
-end
+++ /dev/null
-from __future__ import print_function
-
-def fib(n):
- if n < 2: return n
- return fib(n - 1) + fib(n - 2)
-
-for i in range(0, 5):
- print(fib(28))
+++ /dev/null
-def fib(n)
- if n < 2 then
- n
- else
- fib(n - 1) + fib(n - 2)
- end
-end
-
-for i in 0...5
- puts fib(28)
-end
+++ /dev/null
-class Fib {
- static get(n) {
- if (n < 2) return n
- return get(n - 1) + get(n - 2)
- }
-}
-
-for (i in 1..5) {
- System.print(Fib.get(28))
-}
+++ /dev/null
-int list[0];
-
-for (int i; i < 1000000; ++i)
- list << i;
-
-int sum;
-for (int i; i < list.size(); ++i)
- i +=> sum;
-
-<<< sum >>>;
+++ /dev/null
-main() {
- var list = [];
-
- for (var i = 0; i < 1000000; i++) list.add(i);
-
- var sum = 0;
- for (i in list) sum += i;
-
- print(sum);
-}
+++ /dev/null
-int list[0];
-
-for (int i; i < 1000000; ++i)
- list << i;
-
-int sum;
-foreach(i : list)
- i +=> sum;
-
-<<< sum >>>;
+++ /dev/null
-local list = {}
-for i = 0, 999999 do
- list[i] = i
-end
-
-local sum = 0
-for k, i in pairs(list) do
- sum = sum + i
-end
-io.write(sum .. "\n")
+++ /dev/null
-from __future__ import print_function
-
-# Map "range" to an efficient range in both Python 2 and 3.
-try:
- range = xrange
-except NameError:
- pass
-
-list = []
-for i in range(0, 1000000):
- list.append(i)
-
-sum = 0
-for i in list:
- sum += i
-print(sum)
+++ /dev/null
-list = []
-1000000.times {|i| list << i}
-
-sum = 0
-list.each {|i| sum += i}
-puts sum
+++ /dev/null
-var list = []
-
-for (i in 0...1000000) list.add(i)
-
-var sum = 0
-for (i in list) sum = sum + i
-
-System.print(sum)
+++ /dev/null
-class Toggle {
- int state;
- fun int value() { return state; }
- fun Toggle activate() {
- !state => state;
- return this;
- }
-}
-
-class NthToggle extends Toggle {
- int count, countMax;
- fun Toggle activate() {
- if(++count >= countMax) {
- (this $ Toggle).activate();
- 0 => count;
- }
- return this;
- }
-}
-
-100000 => int n;
-
-Toggle toggle;
-true => int val => toggle.state;
-
-repeat(n) {
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
-}
-
-<<< toggle.value() >>>;
-
-NthToggle ntoggle;
-true => val => ntoggle.state;
-3 => ntoggle.countMax;
-
-repeat(n) {
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
-}
-
-<<< ntoggle.value() >>>;
+++ /dev/null
-class Toggle {
- var _state;
-
- Toggle(startState) {
- _state = startState;
- }
-
- get value => _state;
-
- activate() {
- _state = !_state;
- return this;
- }
-}
-
-class NthToggle extends Toggle {
- var _count;
- var _countMax;
-
- NthToggle(startState, maxCounter)
- : super(startState) {
- _countMax = maxCounter;
- _count = 0;
- }
-
- activate() {
- _count = _count + 1;
- if (_count >= _countMax) {
- super.activate();
- _count = 0;
- }
-
- return this;
- }
-}
-
-main() {
- Stopwatch watch = new Stopwatch();
- watch.start();
-
- var n = 100000;
- var val = true;
- var toggle = new Toggle(val);
-
- for (var i = 0; i < n; i++) {
- val = toggle.activate().value;
- val = toggle.activate().value;
- val = toggle.activate().value;
- val = toggle.activate().value;
- val = toggle.activate().value;
- val = toggle.activate().value;
- val = toggle.activate().value;
- val = toggle.activate().value;
- val = toggle.activate().value;
- val = toggle.activate().value;
- }
-
- print(toggle.value);
-
- val = true;
- var ntoggle = new NthToggle(val, 3);
-
- for (var i = 0; i < n; i++) {
- val = ntoggle.activate().value;
- val = ntoggle.activate().value;
- val = ntoggle.activate().value;
- val = ntoggle.activate().value;
- val = ntoggle.activate().value;
- val = ntoggle.activate().value;
- val = ntoggle.activate().value;
- val = ntoggle.activate().value;
- val = ntoggle.activate().value;
- val = ntoggle.activate().value;
- }
-
- print(ntoggle.value);
- print("elapsed: ${watch.elapsedMilliseconds / 1000}");
-}
+++ /dev/null
-class Toggle {
- bool state;
- fun bool value() { return state; }
- fun Toggle activate() {
- !state => state;
- return this;
- }
-}
-
-class NthToggle extends Toggle {
- int count, countMax;
- fun Toggle activate() {
- if(++count >= countMax) {
- (this $ Toggle).activate();
- 0 => count;
- }
- return this;
- }
-}
-
-100000 => int n;
-
-Toggle toggle;
-true => bool val => toggle.state;
-
-repeat(n) {
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
- toggle.activate().value() => val;
-}
-
-<<< toggle.value() >>>;
-
-NthToggle ntoggle;
-true => val => ntoggle.state;
-3 => ntoggle.countMax;
-
-repeat(n) {
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
- ntoggle.activate().value() => val;
-}
-
-<<< ntoggle.value() >>>;
+++ /dev/null
--- $Id: methcall.lua,v 1.2 2004-06-12 16:19:43 bfulgham Exp $
--- http://shootout.alioth.debian.org
--- contributed by Roberto Ierusalimschy
-
---------------------------------------------------------------
--- Toggle class
---------------------------------------------------------------
-
-Toggle = {}
-
-function Toggle:value ()
- return self.state
-end
-
-function Toggle:activate ()
- self.state = not self.state
- return self
-end
-
-function Toggle:new (start_state)
- local o = {state = start_state}
- self.__index =self
- setmetatable(o, self)
- return o
-end
-
-
---------------------------------------------------------------
--- NthToggle class
---------------------------------------------------------------
-
-NthToggle = Toggle:new()
-
-function NthToggle:activate ()
- self.counter = self.counter + 1
- if self.counter >= self.count_max then
- Toggle.activate(self)
- self.counter = 0
- end
- return self
-end
-
-function NthToggle:new (start_state, max_counter)
- local o = Toggle.new(self, start_state)
- o.count_max = max_counter
- o.counter = 0
- return o
-end
-
-
------------------------------------------------------------
--- main
------------------------------------------------------------
-
-function main ()
- local N = 100000
-
- local val = 1
- local toggle = Toggle:new(val)
- for i=1,N do
- val = toggle:activate():value()
- val = toggle:activate():value()
- val = toggle:activate():value()
- val = toggle:activate():value()
- val = toggle:activate():value()
- val = toggle:activate():value()
- val = toggle:activate():value()
- val = toggle:activate():value()
- val = toggle:activate():value()
- val = toggle:activate():value()
- end
- print(val and "true" or "false")
-
- val = 1
- local ntoggle = NthToggle:new(val, 3)
- for i=1,N do
- val = ntoggle:activate():value()
- val = ntoggle:activate():value()
- val = ntoggle:activate():value()
- val = ntoggle:activate():value()
- val = ntoggle:activate():value()
- val = ntoggle:activate():value()
- val = ntoggle:activate():value()
- val = ntoggle:activate():value()
- val = ntoggle:activate():value()
- val = ntoggle:activate():value()
- end
- print(val and "true" or "false")
-end
-
-main()
-
+++ /dev/null
-#!/usr/bin/python
-# http://www.bagley.org/~doug/shootout/
-from __future__ import print_function
-
-# Map "range" to an efficient range in both Python 2 and 3.
-try:
- range = xrange
-except NameError:
- pass
-
-class Toggle(object):
- def __init__(self, start_state):
- self.bool = start_state
- def value(self):
- return(self.bool)
- def activate(self):
- self.bool = not self.bool
- return(self)
-
-class NthToggle(Toggle):
- def __init__(self, start_state, max_counter):
- Toggle.__init__(self, start_state)
- self.count_max = max_counter
- self.counter = 0
- def activate(self):
- self.counter += 1
- if (self.counter >= self.count_max):
- super(NthToggle, self).activate()
- self.counter = 0
- return(self)
-
-
-def main():
- NUM = 100000
-
- val = 1
- toggle = Toggle(val)
- for i in range(0,NUM):
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- if val:
- print("true")
- else:
- print("false")
-
- val = 1
- ntoggle = NthToggle(val, 3)
- for i in range(0,NUM):
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- if val:
- print("true")
- else:
- print("false")
-
-main()
+++ /dev/null
-#!/usr/bin/ruby
-# -*- mode: ruby -*-
-# $Id: methcall.ruby,v 1.1 2004-05-19 18:10:41 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# with help from Aristarkh Zagorodnikov
-
-class Toggle
- def initialize(start_state)
- @bool = start_state
- end
-
- def value
- @bool
- end
-
- def activate
- @bool = !@bool
- self
- end
-end
-
-class NthToggle < Toggle
- def initialize(start_state, max_counter)
- super start_state
- @count_max = max_counter
- @counter = 0
- end
-
- def activate
- @counter += 1
- if @counter >= @count_max
- super
- @counter = 0
- end
- self
- end
-end
-
-def main()
- start = Time.now
-
- n = 100000
-
- val = 1
- toggle = Toggle.new(val)
- n.times do
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- val = toggle.activate().value()
- end
- if val then puts "true" else puts "false" end
-
- val = 1
- ntoggle = NthToggle.new(val, 3)
- n.times do
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- val = ntoggle.activate().value()
- end
- if val then puts "true" else puts "false" end
-
- puts "elapsed: " + (Time.now - start).to_s
-end
-
-main()
+++ /dev/null
-class Toggle {
- construct new(startState) {
- _state = startState
- }
-
- value { _state }
- activate {
- _state = !_state
- return this
- }
-}
-
-class NthToggle is Toggle {
- construct new(startState, maxCounter) {
- super(startState)
- _countMax = maxCounter
- _count = 0
- }
-
- activate {
- _count = _count + 1
- if (_count >= _countMax) {
- super.activate
- _count = 0
- }
-
- return this
- }
-}
-
-var n = 100000
-var val = true
-var toggle = Toggle.new(val)
-
-for (i in 0...n) {
- val = toggle.activate.value
- val = toggle.activate.value
- val = toggle.activate.value
- val = toggle.activate.value
- val = toggle.activate.value
- val = toggle.activate.value
- val = toggle.activate.value
- val = toggle.activate.value
- val = toggle.activate.value
- val = toggle.activate.value
-}
-
-System.print(toggle.value)
-
-val = true
-var ntoggle = NthToggle.new(val, 3)
-
-for (i in 0...n) {
- val = ntoggle.activate.value
- val = ntoggle.activate.value
- val = ntoggle.activate.value
- val = ntoggle.activate.value
- val = ntoggle.activate.value
- val = ntoggle.activate.value
- val = ntoggle.activate.value
- val = ntoggle.activate.value
- val = ntoggle.activate.value
- val = ntoggle.activate.value
-}
-
-System.print(ntoggle.value)
+++ /dev/null
-int count;
-for (int i; i < 1000000; ++i) {
- if ("abc" == "abc") ++count;
- if ("a slightly longer string" ==
- "a slightly longer string") ++count;
- if ("a significantly longer string but still not overwhelmingly long string" ==
- "a significantly longer string but still not overwhelmingly long string") ++count;
-
- if ("" == "abc") ++count;
- if ("abc" == "abcd") ++count;
- if ("changed one character" == "changed !ne character") ++count;
- if ("a slightly longer string" ==
- "a slightly longer string!") ++count;
- if ("a slightly longer string" ==
- "a slightly longer strinh") ++count;
- if ("a significantly longer string but still not overwhelmingly long string" ==
- "another") ++count;
-}
-
-<<< count >>>;
+++ /dev/null
-int count;
-for (int i; i < 1000000; ++i) {
- if ("abc" == "abc") ++count;
- if ("a slightly longer string" ==
- "a slightly longer string") ++count;
- if ("a significantly longer string but still not overwhelmingly long string" ==
- "a significantly longer string but still not overwhelmingly long string") ++count;
-
- if ("" == "abc") ++count;
- if ("abc" == "abcd") ++count;
- if ("changed one character" == "changed !ne character") ++count;
- if ("a slightly longer string" ==
- "a slightly longer string!") ++count;
- if ("a slightly longer string" ==
- "a slightly longer strinh") ++count;
- if ("a significantly longer string but still not overwhelmingly long string" ==
- "another") ++count;
-}
-
-<<< count >>>;
+++ /dev/null
-from __future__ import print_function
-
-count = 0
-for i in range(0, 1000000):
- if "abc" == "abc":
- count = count + 1
- if "a slightly longer string" == \
- "a slightly longer string":
- count = count + 1
- if "a significantly longer string but still not overwhelmingly long string" == \
- "a significantly longer string but still not overwhelmingly long string":
- count = count + 1
-
- if "" == "abc":
- count = count + 1
- if "abc" == "abcd":
- count = count + 1
- if "changed one character" == "changed !ne character":
- count = count + 1
- if "a slightly longer string" == \
- "a slightly longer string!":
- count = count + 1
- if "a slightly longer string" == \
- "a slightly longer strinh":
- count = count + 1
- if "a significantly longer string but still not overwhelmingly long string" == \
- "another":
- count = count + 1
-
-print(count)
+++ /dev/null
-var count = 0
-for (i in 1..1000000) {
- if ("abc" == "abc") count = count + 1
- if ("a slightly longer string" ==
- "a slightly longer string") count = count + 1
- if ("a significantly longer string but still not overwhelmingly long string" ==
- "a significantly longer string but still not overwhelmingly long string") count = count + 1
-
- if ("" == "abc") count = count + 1
- if ("abc" == "abcd") count = count + 1
- if ("changed one character" == "changed !ne character") count = count + 1
- if ("a slightly longer string" ==
- "a slightly longer string!") count = count + 1
- if ("a slightly longer string" ==
- "a slightly longer strinh") count = count + 1
- if ("a significantly longer string but still not overwhelmingly long string" ==
- "another") count = count + 1
-}
-
-System.print(count)
-Subproject commit 1cf2cf3600dac43c02ca16a209d46e2ce5d33dfc
+Subproject commit bd1767a9a0d89e3e6fbda313f61912afc9f2a1d8