使用像 .join() 这样的本地方法而不是我们自己编写背后的逻辑时,效率有什么不同吗?
is there any difference in efficiency when using a native method like .join() instead of writting the logic behing it by ourselves?
如果我自己写一个原生方法抽象层后面的代码,而不是使用那个方法(它会在后台做我手动写的一样),对应用程序性能有很好的影响或者速度?
使用 built-in 函数而不是自己实现它有(至少)三个显着优势:
(1) 速度 - built-in 函数通常调用 浏览器 提供的 lower-level 代码(不在 Javascript 中),并表示代码通常比 Javascript 中的相同代码运行得快得多。 Polyfill 比本地代码慢。
(2) 可读性 - 如果您的代码的另一个 reader 看到 ['foo', 'bar'].join(' ')
,他们将 立即 知道它的作用,以及如何 join
方法有效。另一方面,如果他们看到类似 doJoin(['foo', 'bar'], ' ')
的内容,其中 doJoin
是您自己对同一方法的实现,他们将不得不查找 doJoin
方法以确定是什么发生在那里。
(3) 准确性 - 如果您在编写实现时犯了错误,但错误不是很明显怎么办?那可能是个问题。相比之下,built-in 方法几乎从来没有错误(而且,一旦发现,通常会得到修复)。
也有人会争辩说,在已解决的问题上花费精力是没有意义的。
是的,在某些情况下效率会有所不同。库 fast.js 的文档中有一些示例。总结一下他们所说的,您不必处理规范中列出的所有情况,因此有时您可以比内置实现更快地执行某些操作。
我不会将此视为基于过早优化使您的代码更难 read/maintain/reuse 的许可,但是是的,根据您的用例,您可以通过自己实现本机方法来提高速度.
如果我自己写一个原生方法抽象层后面的代码,而不是使用那个方法(它会在后台做我手动写的一样),对应用程序性能有很好的影响或者速度?
使用 built-in 函数而不是自己实现它有(至少)三个显着优势:
(1) 速度 - built-in 函数通常调用 浏览器 提供的 lower-level 代码(不在 Javascript 中),并表示代码通常比 Javascript 中的相同代码运行得快得多。 Polyfill 比本地代码慢。
(2) 可读性 - 如果您的代码的另一个 reader 看到 ['foo', 'bar'].join(' ')
,他们将 立即 知道它的作用,以及如何 join
方法有效。另一方面,如果他们看到类似 doJoin(['foo', 'bar'], ' ')
的内容,其中 doJoin
是您自己对同一方法的实现,他们将不得不查找 doJoin
方法以确定是什么发生在那里。
(3) 准确性 - 如果您在编写实现时犯了错误,但错误不是很明显怎么办?那可能是个问题。相比之下,built-in 方法几乎从来没有错误(而且,一旦发现,通常会得到修复)。
也有人会争辩说,在已解决的问题上花费精力是没有意义的。
是的,在某些情况下效率会有所不同。库 fast.js 的文档中有一些示例。总结一下他们所说的,您不必处理规范中列出的所有情况,因此有时您可以比内置实现更快地执行某些操作。
我不会将此视为基于过早优化使您的代码更难 read/maintain/reuse 的许可,但是是的,根据您的用例,您可以通过自己实现本机方法来提高速度.