我有一个 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/