在Javascript中,什么被认为是;计算上很昂贵;?
我一直在学习如何在回调中包装初始状态值,以在React中实现useState钩子的延迟初始化。这是一个很酷的技巧,但是每一个资源或教程对于如何确定某些东西在计算上是昂贵的都有点模糊或不透明 我知道我不应该在回调中包装原语,例如在Javascript中,什么被认为是;计算上很昂贵;?,javascript,reactjs,performance,optimization,react-hooks,Javascript,Reactjs,Performance,Optimization,React Hooks,我一直在学习如何在回调中包装初始状态值,以在React中实现useState钩子的延迟初始化。这是一个很酷的技巧,但是每一个资源或教程对于如何确定某些东西在计算上是昂贵的都有点模糊或不透明 我知道我不应该在回调中包装原语,例如()=>0或()=>',因为这实际上会更糟,因为创建此回调的成本超过每次仅使用原语的成本。但目前还不清楚在表达式变得昂贵之前,我需要穿过什么样的阈值。someArray[someIndex]昂贵吗?'foo'+'bar'或1*1贵吗?我知道window.localStora
()=>0
或()=>'
,因为这实际上会更糟,因为创建此回调的成本超过每次仅使用原语的成本。但目前还不清楚在表达式变得昂贵之前,我需要穿过什么样的阈值。someArray[someIndex]
昂贵吗?'foo'+'bar'
或1*1
贵吗?我知道window.localStorage.getItem('fizz')
和Math.random()
都很昂贵,但这只是因为除了无用的expensiveComputation()
之外,还将它们用作示例
如果没有明确的“硬线”可以作为回答这个问题的规则,那么是否有任何工具或调试技术可以用来决定?问题属于这里:测量有无挂钩的性能,比较,决定。