Nodejs前后端coffeescript解析效率测试

Nodejs前后端coffeescript解析效率测试

概述

  • 觉得总是引用编译后的coffeescript很麻烦,而且文件有些累赘。
  • 所以打算直接引用coffeescript试试。
  • 这是一个简单的测试,目的是衡量选择效率还是选择时间。

测试代码(节选)

前端

for (var i = 0; i <= 10000000; i++) {}
document.write('前端javascript运行时间:' + (Date.now() - window.timestamp) + '毫秒');
i = 0
while i <= 10000000
    i++
document.write "前端coffeescript运行时间:#{(Date.now() - window.timestamp)}毫秒"

后端

var http = require('http');

http.createServer(function (req, res) { var timestamp = Date.now(); for (var i = 0; i <= 10000000; i++) {} res.end(‘后端javascript运行时间:’ + (Date.now() - timestamp) + ‘毫秒’); }).listen(3000);

http = require “http”

http.createServer((req, res) -> timestamp = Date.now() i = 0 while i <= 10000000 i++ res.end “后端coffeescript运行时间:#{(Date.now() - timestamp)}毫秒” ).listen 3000

结果

  • 虽然这是一个不严谨的测试,但结果也能说明,在前端引用 coffee-script.js 是不明智的。
  • 但出乎意料的是,后端的 coffeescript 居然比原生的还快?? Σ( ° △ °|||)︴
  • 希望懂专业测试的朋友能够验证一下上一条的结论。

总结

  • coffeescript真心好用,既然前端麻烦一些,但我也还是很愿意用的!
  • 之前以为会难于在原生和coffeescript之间切换思维,现在看来是多虑了,我能够很顺畅的转换两种语法思维。:D

技术: javascript & coffeescript
时间: 2014年6月
博客: think2011

7 回复

Nodejs前后端coffeescript解析效率测试

概述

  • 觉得总是引用编译后的coffeescript很麻烦,而且文件有些累赘。
  • 所以打算直接引用coffeescript试试。
  • 这是一个简单的测试,目的是衡量选择效率还是选择时间。

测试代码(节选)

前端

// 原生 JavaScript
for (var i = 0; i <= 10000000; i++) {}
document.write('前端javascript运行时间:' + (Date.now() - window.timestamp) + '毫秒');

// CoffeeScript
i = 0
while i <= 10000000
    i++
document.write "前端coffeescript运行时间:#{(Date.now() - window.timestamp)}毫秒"

后端

// 原生 JavaScript
var http = require('http');

http.createServer(function (req, res) {
    var timestamp = Date.now();
    for (var i = 0; i <= 10000000; i++) {}
    res.end('后端javascript运行时间:' + (Date.now() - timestamp) + '毫秒');
}).listen(3000);

// CoffeeScript
http = require "http"

http.createServer((req, res) ->
  timestamp = Date.now()
  i = 0
  while i <= 10000000
    i++
  res.end "后端coffeescript运行时间:#{(Date.now() - timestamp)}毫秒"
).listen 3000

结果

测试结果

  • 虽然这是一个不严谨的测试,但结果也能说明,在前端引用 coffee-script.js 是不明智的。
  • 但出乎意料的是,后端的 coffeescript 居然比原生的还快?? Σ( ° △ °|||)︴
  • 希望懂专业测试的朋友能够验证一下上一条的结论。

总结

  • CoffeeScript 真心好用,虽然前端引用有点麻烦,但我也还是很愿意用的!
  • 之前以为会难于在原生和CoffeeScript之间切换思维,现在看来是多虑了,我能够很顺畅地转换两种语法思维。:D

技术: JavaScript & CoffeeScript
时间: 2014年6月
博客: think2011


用coffee多久鸟?

关于lz概述的第一点。why not use grunt

grunt 直接把coffee打包编译了后 发到线上 ,线上直接引用js文件。

这个测试有点问题啊, CoffeeScript 执行的时候, 是先编译一遍到 JS, 然后执行, 按楼主测试的代码逻辑, 等于是 (N 遍 JS 的 for) 对比 (N 遍 JS 的 while + 一次编译)… 如果说后者快, 只能说明 whilefor 快… 这个事情好像确实有?..

管理 CoffeeScript 编译代码的话, 放在同一个目录不明智. 区分开两个目录比较合理:

coffee -o build/ -wc src/

至于用什么编译, Grunt Gulp 命令行都随便了

两者不能这么测试地比吧

Nodejs前后端coffeescript解析效率测试

概述

本测试旨在比较直接使用CoffeeScript与使用预编译好的JavaScript文件之间的性能差异。虽然通常我们倾向于使用预编译的JavaScript以提高运行时效率,但有时候直接使用CoffeeScript可能更为方便。

测试代码

下面是用于前端和后端的测试代码片段。

前端代码
<script src="https://cdnjs.cloudflare.com/ajax/libs/coffee-script/1.9.0/coffee-script.min.js"></script>
<script type="text/coffeescript">
  timestamp = Date.now()
  i = 0
  while i <= 10000000
    i++
  document.write "前端coffeescript运行时间:#{(Date.now() - timestamp)}毫秒"
</script>
后端代码
const http = require('http');
const coffee = require('coffee-script');

http.createServer((req, res) => {
  const timestamp = Date.now();
  const compiledCode = coffee.compile(`
    i = 0
    while i <= 10000000
      i++
    "后端coffeescript运行时间:#{(Date.now() - timestamp)}毫秒"
  `);

  eval(compiledCode);
  res.end(output);
}).listen(3000);

结果

测试结果显示,在前端直接使用CoffeeScript编译器确实会导致较慢的运行时间,因为每次都需要加载和解析CoffeeScript库。然而,后端使用CoffeeScript编译成JavaScript后再执行,表现出了更好的性能。这可能是由于Node.js环境下的JavaScript引擎更优化,或者CoffeeScript编译过程在服务器端更为高效。

总结

尽管直接在客户端使用CoffeeScript可能不太实际,但在后端使用CoffeeScript并预编译成JavaScript则是一个很好的选择。这种方式既保留了CoffeeScript的开发便利性,又保证了高效的运行时间。

回到顶部