coffeescript比javascript快吗?

Javascript无处不在,在我心中不断变得越来越重要.大多数程序员会同意,虽然Javascript本身是丑陋的,但它的“领土”确实令人印象深刻.随着HTML5的功能和通过Javascript部署应用程序的现代浏览器的速度是一个有趣的选择:它可能是跨平台的,你可以得到.

自然的结果是交叉编译器.主要可能是GWT,但还有其他几个选择.我最喜欢的是Coffeescript,因为它只是在Javascript上添加一个薄层,而且比“GWT”更“轻”.

只有一件事情让我失望:虽然我的项目是相当小的性能一直是一个重要的话题.这是一个报价

The GWT SDK provides a set of core Java APIs and Widgets. These allow
you to write AJAX applications in Java and then compile the source to
highly optimized JavaScript

Coffeescript是否也进行了优化?由于Coffeescript似乎大量使用非常见的Javascript功能,我担心他们的性能如何比较.

你有经验与Coffeescript相关的速度问题吗?
你知道一个很好的基准比较吗?

解决方法

对于复活一个旧话题的道歉,但它也是关于我的.我决定进行一些测试,我知道的一个最简单的性能测试是将连续的值写入阵列,内存以熟悉的方式消耗,随着阵列的增长,“for”循环在现实生活中是常见的,被考虑相关.

经过几个红色的鲱鱼,我发现咖啡的最简单的方法是:

newway = -> [0..1000000]
# simpler and quicker than the example from http://coffeescript.org/#loops
# countdown = (num for num in [10..1])

这将使用一个闭包并返回数组作为结果.我的等同是这样的:

function oldway()
{
    var a = [];
    for (var i = 0; i <= 1000000; i++)
        a[i] = i;
    return a;
}

你可以看到结果是相同的,它也以类似的方式增长了一个数组.接下来我分别镀铬100次,平均.

newway() | 78.5ms
oldway() | 49.9ms

Coffeescript慢78%.我反驳说,“你写的CoffeeScript最终运行速度和(你经常写的JS一样快)(Jeremy Ashkenas)

附录:我也怀疑“JS总是有一对一”的普遍信念.我试图用这个重新创建我自己的代码

badway = ->
    a = []
    for i in [1..1000000]
        a[i] = i
    return a

尽管有相似之处,但它仍然被证明是慢了7%,因为它增加了方向(增量或减量)的检查,这意味着它不是一个直接的翻译.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...