拼接1000000个字符串,计算机需要处理多长时间呢?以下采用两种方式来更好的理解JavaScript中使用对象处理问题的优势,尤其是在处理大数据的情况下,这种优势会更加明显。
无论是采用面向对象还是面向过程,其实就是解决问题的方式;就来拿洗衣服来说,洗一件衣服就没必要去造一个洗衣机;
而洗N件衣服,事先准备一个洗衣机比用手洗来的更为有效;回到根本就是能够最大限度的节约有效利用计算机内存就是最好的
我们处理编程无非是节约时间和空间效率
举例来说javaScript 中最常见的一个问题是字符串连接的性能。请考虑下面的代码:
var str = "hello ";
str += "world";
在这段代码在系统执行的步骤如下:
创建存储 "hello " 的字符串。
创建存储 "world" 的字符串。
创建存储连接结果的字符串。
把 str 的当前内容复制到结果中。
把 "world" 复制到结果中。
更新 str,使它指向结果。
每次完成字符串连接都会执行步骤 2 到 6,使得这种操作非常消耗资源。如果重复这一过程几百次,甚至几千次,就会造成性能问题。代码结果如下:
解决方法是用 Array 对象存储字符串,然后用 join() 方法(参数是空字符串)这样,无论数组中引入多少字符串都不成问题,因为只在调用 join() 方法时才会发生连接操作。此时测试的代码和结果如下:
执行10000结果如下:
执行100000结果如下:
由于测试的电脑比较老了,性能有限,结果还是比较明显的,也印证了使用面向对象对处理大数据效率更高!