Skip to content
satyr edited this page Dec 24, 2010 · 22 revisions

Size/Speed

$ git log -1 --format=oneline
33d2577fb52e371e5456d1543c0eaf51807fa7a4 CoffeeScript 1.0.0

$ ls -s extras/*.js
160 extras/coffee-script.js

$ cake loc
2347

$ cake bench
Lex     1466 ms (21054 tokens)
Rewrite  183 ms (23516 tokens)
Parse    180 ms
Compile  184 ms (127575 chars)
total   2013 ms

$ cd ../coco

$ git log -1 --format=oneline
1100c912d154851ec52fe702eb356920adb26b9b 0.2.0

$ ls -s extras/*.js
108 extras/coco.js*

$ coke loc
1975

$ coke bench
Lex      984 ms (18180 tokens)
Rewrite  117 ms (20858 tokens)
Parse    119 ms (19572 nodes)
Compile  161 ms (115470 chars)
TOTAL   1381 ms

Temporary Variables

Coco uses them more wisely than Coffee, making generated code cleaner and/or faster. $ coffee -bpe '[i for i in a]' var i; [ (function() { var _i, _len, _results; _results = []; for (_i = 0, _len = a.length; _i < _len; _i++) { i = a[_i]; _results.push(i); } return _results; })() ];

$ coco -bpe '[i for i of a]'
var i;
[
  (function(){
    var _i, _ref, _len, _results = [];
    for (_i = 0, _len = (_ref = a).length; _i < _len; ++_i) {
      i = _ref[_i];
      _results.push(i);
    }
    return _results;
  }())
];

$ coffee -bpe 'a < b() < c; d > e() > f'
var _ref, _ref2;
(a < (_ref = b()) && _ref < c);
(d > (_ref2 = e()) && _ref2 > f);

$ coco -bpe 'a < b() < c; d > e() > f'
var _ref;
a < (_ref = b()) && _ref < c;
d > (_ref = e()) && _ref > f;
Clone this wiki locally