在性能方面,在算法复杂性方面,以下两个用于将字符串首字母大写的 JS 函数中哪个更好,为什么?
Performance-wise,algorithmic complexity-wise which of the following two JS fucntion for capitializing the first letter of a string is better and why?
考虑以下两个函数
a) this.charAt(0).toUpperCase() + this.substring(1);
b) this.charAt(0).toUpperCase() + this.slice(1);
代码基本上是将字符串的第一个字母大写。
例如
var name ="test name";
//var capitializeFirstLetter = name.charAt(0).toUpperCase() + name.slice(1);
var capitializeFirstLetter = name.charAt(0).toUpperCase() + name.substring(1);
alert(capitializeFirstLetter);
输出:测试名称
性能方面和算法复杂性方面哪个更好,为什么?
还有更好或更优化的东西吗?
谢谢
这两种方法的复杂度完全一样。因此,任何感知差异完全是个人意见。
这两种方法产生的结果相同,因此在输出方面没有偏好。仅供参考,输出是 "Test name"
,而不是您认为的 "Test Name"
。生成 "Test Name"
需要不同的过程。
如果你真的关心微优化性能,那么回答所有性能问题的唯一方法是创建一个或多个有意义的测试用例,设计一个性能测试(通常使用像 jsperf 这样的工具)然后衡量你的在任何对你重要的 JS 引擎中测试用例,然后评估结果。
与性能问题一样,过早的优化是愚蠢的,因为在您知道您确实存在对您的应用程序很重要的可测量性能问题之前,不应花时间优化性能。在那之前,您应该编写干净、易于理解和可靠的代码,并将您的开发精力花在其他领域。
考虑以下两个函数
a) this.charAt(0).toUpperCase() + this.substring(1);
b) this.charAt(0).toUpperCase() + this.slice(1);
代码基本上是将字符串的第一个字母大写。
例如
var name ="test name";
//var capitializeFirstLetter = name.charAt(0).toUpperCase() + name.slice(1);
var capitializeFirstLetter = name.charAt(0).toUpperCase() + name.substring(1);
alert(capitializeFirstLetter);
输出:测试名称
性能方面和算法复杂性方面哪个更好,为什么?
还有更好或更优化的东西吗?
谢谢
这两种方法的复杂度完全一样。因此,任何感知差异完全是个人意见。
这两种方法产生的结果相同,因此在输出方面没有偏好。仅供参考,输出是 "Test name"
,而不是您认为的 "Test Name"
。生成 "Test Name"
需要不同的过程。
如果你真的关心微优化性能,那么回答所有性能问题的唯一方法是创建一个或多个有意义的测试用例,设计一个性能测试(通常使用像 jsperf 这样的工具)然后衡量你的在任何对你重要的 JS 引擎中测试用例,然后评估结果。
与性能问题一样,过早的优化是愚蠢的,因为在您知道您确实存在对您的应用程序很重要的可测量性能问题之前,不应花时间优化性能。在那之前,您应该编写干净、易于理解和可靠的代码,并将您的开发精力花在其他领域。