提高效率的 CoffeeScript

标签 coffeescript

我有一个 CoffeeScript 代码

for y in [coY - limit .. coY + limit]
    for x in [coX - limit .. coX + limit]

我一直在寻找提高代码速度的方法,并找到了它编译成的内容:

for (y = _i = _ref = coY - limit, _ref1 = coY + limit; _ref <= _ref1 ? _i <= _ref1 : _i >= _ref1; y = _ref <= _ref1 ? ++_i : --_i) {
  for (x = _j = _ref2 = coX - limit, _ref3 = coX + limit; _ref2 <= _ref3 ? _j <= _ref3 : _j >= _ref3; x = _ref2 <= _ref3 ? ++_j : --_j) {

当我用我自己的 JavaScript 替换它时

for(y = coY - limit; y <= coY + limit; y++) {
    for(x = coX - limit; x <= coX + limit; x++) {

我测得脚本明显更快(从 25 毫秒到 15 毫秒)。我能以某种方式强制 CoffeeScript 编译成与我的代码相似的代码吗?还是有其他解决办法?

谢谢。

最佳答案

假设你的循环总是从一个较小的数字到一个较大的数字,你可以使用by 1:

for y in [coY - limit .. coY + limit] by 1
    for x in [coX - limit .. coX + limit] by 1

编译为:

for (y = _i = _ref = coY - limit, _ref1 = coY + limit; _i <= _ref1; y = _i += 1) {
  for (x = _j = _ref2 = coX - limit, _ref3 = coX + limit; _j <= _ref3; x = _j += 1) {

它不是HEAPS更好,但可能好一点。

关于提高效率的 CoffeeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710275/

相关文章:

javascript - 为什么我的微调器没有显示在 Turbolinks 中?

backbone.js - Backbone fetch() 抛出未捕获的类型错误 : Cannot read property 'ajax' of undefined

javascript - 全局 JS 变量的令人困惑的未捕获引用错误

jquery - 将 jquery 代码转换为 Coffeescript 代码时出错

javascript - 我的一些应用程序初始化程序似乎没有触发?

angularjs - 为什么即使我在 JSFiddle 中声明 ng-app ="MyApp"也需要 angular.bootstrap

javascript - 让 javascript 仅作用于列表中的一项

javascript - 合并和数量添加 javascript 对象

javascript - 引用类/实例而不是对象文字属性的正确方法?

jquery - 为什么我收到 Rails 3.2 jQuery Coffeescript 语法错误