我如何强制node.js做更深的recursion?
我有一个memoizedrecursionalgorithmf(n)
当我运行f(1000)
一切正常,它需要不到一分钟的时间运行。
当我运行f(10000)
我得到一个范围错误/最大调用堆栈大小超过。
我不相信这个错误与我的algorithm(这是归因于多项式)的效率有什么关系,似乎更像是一个configuration。
我试着做node app.js --stack-size=32000
,并没有使错误消失。 我以为10X目前的堆栈大小就足够了。 这个堆栈大小是否可能太小,或者是否有办法在节点中强制/设置一个configuration来处理n = 10000
情况?
此外, – 堆栈大小选项似乎没有做任何事情…我减less到“1”,我的程序运行速度一样快。
看起来好像Node要求它的启动标志放在执行文件名之前。
node --stack-size=32000 app.js
只是在这里2便士提示:
如果你的应用程序抛出堆栈溢出错误,意味着你正在做的事情太大了,inheritance了太多的范围。
考虑将login划分为asynchronous函数,这样它就可以在不同的上下文中执行调用,并且可以防止堆栈溢出exception的问题,并允许应用程序跨整个逻辑共享计算资源,而不是自私地在一个函数中使用它实际上是一个瓶颈。