javascript - 函数式编程效率 vs 命令式

标签 javascript functional-programming

我是函数式编程的新手,我刚遇到一些事情,想知道是否有解决办法。

假设我有

myArray = [
  { a : 1 }
  { a : 4 }
  { a : 5 }
  { a : 6 }
  { a : 7 }
  { a : 8 }
]

假设我需要对这个数据集进行统计操作,例如

const median = myArray[ Math.ceil( myArray.length / 2 ) ]['a'] // Math.ceil .. Side Effect?
const fiveOrMore = myArray.filter( value => value.a >= 5 )
const lessThanFive = myArray.filter( value => value.a < 5 )

一些随意的例子。 目前的问题是,随着我需要做的统计操作量的增加,效率会降低。

使用命令式风格,我可以在 ONE for 循环中完成所有操作。这是我采用的函数式编程的错误方法,还是函数式编程范式本身的权衡

最佳答案

这当然性能较差。而性能命中您选择的样式的权衡。

有人可能会争辩说这没什么大不了的,因为时间复杂度是 O(n)the only difference is the constant .我会说确保你性能测试你的应用程序。如果它很慢——是时候优化某些代码块了。

过早的优化是邪恶的。在许多情况下,命令式代码比函数式代码运行得更快或快得多,或者快得多,这取决于具体情况,您可能会接受也可能不会接受。

此外,还有各种提高性能的技术。您不一定要更改样式。比如说,在某些情况下 memoization可以大大提高函数的速度,同时保持代码的功能。跳出框框思考。

关于javascript - 函数式编程效率 vs 命令式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50804313/

相关文章:

javascript - Three.js:在全景图的地板上添加图像

javascript - Backbone .牵线木偶触发器

javascript - JavaScript 方法的部分应用 : how to retain th meaning of “this”

javascript - array 在 typescript,javascript 中转换

javascript - jQueryclearinterval/stopinterval 不起作用

javascript - 在 HTML 中显示 PHP var(使用 jQuery)

math - Monad 有什么特别之处?

编写惰性序列转换的 Swift 问题

javascript - 如何使用 ramda 柯里化(Currying)多个参数而不专门调用返回函数

java - 函数式编程(Streams)返回类型ArrayList java