上一篇:如何修改Linux主机名 - 下一篇:Javascript常犯的一个错误
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2006/11/23/javascript-strreplace-benchmark/以及本声明。
感谢Clear为我们提供了这个效率更高的字符串替换函数。这是经常使用的HTML特殊字符替换函数,即将 &、<、>、" 等函数替换成 &、<、>、"。通常的作法都是连续使用数个 replace 函数,而Clear仅使用一个 replace 就完成了替换。
我对这两个函数作了benchmark,发现新函数的效率约为原函数的1.4倍。虽然没有预想中那么高效率,但当要替换的字符串更多时,效率应该会提高吧。
测试方法为,对一个2048字节长的字符串分别执行两个函数100次,取其执行时间。下面为10次测试的结果。toTXT_1 为通常的作法,toTXT_2 为Clear的方法。
| toTXT_1(ms) | toTXT_2(ms) | toTXT_1/toTXT_2 |
| 1609 | 1204 | 75% |
| 2250 | 1547 | 69% |
| 1672 | 1313 | 79% |
| 1813 | 1250 | 69% |
| 1844 | 1219 | 66% |
| 2063 | 1421 | 69% |
| 2031 | 1172 | 58% |
| 1797 | 1360 | 76% |
| 2015 | 1281 | 64% |
| 1860 | 1500 | 81% |
测试程序在这里。
javascript-benchmark.zip
2006-11-25 14:56
看了一下。。。
单次匹配比多次要快,确实。
O(n),O(nm)哪个快呢?不用说也知道是前者。
2006-11-25 22:21
虽说如此,但是实际应用的时候要考虑到代码的易读性和维护性。
我觉得单次匹配的可读性要比多次匹配差得多。
实际应用时应考虑单次匹配是否能够带来足够的好处。
2008-06-24 11:30
各位大哥,明显是toTXT_2(Clear)方法效率要慢得多啊.
IE6和火狐都试过了.特别是IE6,比较下来慢得离谱.在火狐里时间则多花一倍.怎么都说效率高呢?
2008-06-24 11:34
附上执行结果:
IE6:
function 0: 47 ms (100 times)
function 1: 625 ms (100 times)
function 0: 31 ms (100 times)
function 1: 641 ms (100 times)
function 0: 31 ms (100 times)
function 1: 625 ms (100 times)
function 0: 31 ms (100 times)
function 1: 625 ms (100 times)
function 0: 31 ms (100 times)
function 1: 625 ms (100 times)
function 0: 31 ms (100 times)
function 1: 625 ms (100 times)
function 0: 47 ms (100 times)
function 1: 625 ms (100 times)
function 0: 32 ms (100 times)
function 1: 625 ms (100 times)
function 0: 32 ms (100 times)
function 1: 625 ms (100 times)
function 0: 31 ms (100 times)
function 1: 625 ms (100 times)
function 0: 32 ms (100 times)
function 1: 625 ms (100 times)
火狐3:
function 0: 201 ms (100 times)
function 1: 325 ms (100 times)
function 0: 196 ms (100 times)
function 1: 323 ms (100 times)
function 0: 205 ms (100 times)
function 1: 320 ms (100 times)
function 0: 184 ms (100 times)
function 1: 318 ms (100 times)
function 0: 185 ms (100 times)
function 1: 315 ms (100 times)
function 0: 178 ms (100 times)
function 1: 314 ms (100 times)
function 0: 192 ms (100 times)
function 1: 314 ms (100 times)
function 0: 198 ms (100 times)
function 1: 328 ms (100 times)
function 0: 209 ms (100 times)
function 1: 336 ms (100 times)

2006-11-24 09:42
不错,和我预想的差不多.字符数目越多,效率越高.