【问题标题】:Adding in Javascript (NodeJS) [closed]添加Javascript(NodeJS)[关闭]
【发布时间】:2014-07-18 09:31:59
【问题描述】:

我正在尝试在 NodeJS 中最大化我的 FLOPS,所以我想使用按位运算添加。

所以:

var a = 6, b = 12;
a + b

改为:

var add = function (a, b) {
    var carry, result, shiftedcarry;

    carry = a & b,
    result = a ^ b;

    while (carry !== 0) {
        shiftedcarry = carry << 1;
        carry = result & shiftedcarry;
        result ^= shiftedcarry;
    }

    return result;
}

add(a, b);

但是,我发现这样的答案说,由于强制转换,Javascript 中的按位运算速度较慢。有没有办法绕过这个问题(比如使用 V8 扩展或其他东西)?

我如此专注于提高 FLOPS 的原因是因为我正在考虑在超级计算机上运行 NodeJS 实验。

【问题讨论】:

  • 如果你担心这个,你可能不应该用 JavaScript 写这个。 V8 速度很快,但远非最佳。
  • 这就是 V8 的 JIT 的用途。在大多数情况下,您不需要“优化”,而是需要避免去优化。这是一个可以帮助您入门的链接:github.com/petkaantonov/bluebird/wiki/Optimization-killers
  • 我相信这是过早优化的情况。

标签: javascript node.js


【解决方案1】:

V8 是一个非常好的 JIT。经过足够的迭代后,它会比你更好地优化简单的 a + b。

我做了一个jspref测试来演示:http://jsperf.com/add-optimization

如果你想真正深入了解,可以戳 V8 的输出 How can I see the machine code generated by v8?

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2013-04-22
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多