- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
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”循环在现实生活中很常见,可以考虑相关。
经过几次转移注意力后,我发现 coffeescript 最简单的方法是:
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;
}
如您所见,结果是相同的,并且它也以类似的方式增长数组。接下来,我在 chrome 中每次分析 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%,因为它添加了额外的方向检查(增量或减量),这意味着它不是直接翻译。
关于javascript - coffeescript 比 javascript 快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047276/
我有以下 Coffeescript: $ -> $('#new_event').submit -> $.post( $(this).attr('acti
Coffeescript docs包含以下简介 String Interpolation, Block Strings, and Block Comments Ruby-style string in
如何获得类似于 HTML 的 target='_blank' 的行为在 CoffeeScript 里面? 到目前为止,我已经尝试过: window.location = "/site/#{pk}/go
array = [1,2,3,4] for num in array //do something num的值是多少在函数的其余部分?是否num得到范围到循环? 最佳答案 不,num不会被限制
Coffeescript 使用存在运算符来确定变量何时存在,并且在 coffeescript documentation 中它表明 something?将编译为 something !== undef
我一直在阅读一些关于 coffeescript 的继承模型的内容,我感觉自己正处于一场我真的不理解的意识形态辩论的边缘。所以,我会非常高兴地发现我只是以错误的方式做事。 基本上我正在做的是编写一组小部
这个问题在这里已经有了答案: How to iterate over the keys and values in an object in CoffeeScript? (4 个回答) 8年前关闭。
让我们定义这个简单的代码: class Foo @foo = 'blah' console.log(@foo) class Bar extends Foo constructor: ()
除了这些示例之外,我正在努力寻找任何好的 CoffeeScript 和模式匹配示例: {x, y} = sprite css = {opacity, fontFamily} 我在 Erlang 中使用
我想做一个 if 语句来检查一个对象是否是一个空对象。 空对象是指如果我执行 console.log(object) 它会打印出 {}。 我该怎么做呢? 最佳答案 myObject = {} if O
在 JS 中创建文字数组时: [{ name: 'david', value: 'blue' }, { name: 'harold', value: 'orange' }] 我能看到在 Coffees
我的问题类似于发布的 here .本质上我想读一个配置file.json看起来像这样: { "message": "Error in #{baseName} at #{directory}" }
如果我有一个类,则将多个参数传递给: class Foo constructor: (parameters) -> @bar = parameters.bar @moo = paramet
coffeescript中是否有 namespace 的内在支持? 适当的命名空间似乎确实可以帮助Coffeescript有所帮助,尽管我似乎无法找到任何迹象表明存在对此的支持。 最佳答案 既可以在自
我有一个具有一些jquery事件侦听器的coffeescript类。我想使用粗箭头=>以避免引用该类,但是我仍然需要引用通常与this一起使用的元素。如何同时使用两者? class PostForm
我要转换 console.log({ a: 'a' }, { b: 'b' }); 进入 CoffeeScript。我发现的唯一方法是 console.log a: 'a', b:
我真的很喜欢这个: var value = maxValue > minValue ? minValue : maxValue; Coffeescript 中是否有同样简洁的东西? 最佳答案 valu
我想在coffeescript中编写一个静态帮助器类。这可能吗? 类别: class Box2DUtility constructor: () -> drawWorld: (world, co
super 简单的coffeescript问题 circles = [] for coordinate, i in coordinates circles[i] = new MakeCircl
我在看this great video由 Jeremy 在 CoffeeScript 上发表。他解释说,CoffeeScript 的理想之一是让“一切都是表达式”。 CoffeeScript 离这个理
我是一名优秀的程序员,十分优秀!