作者danny0838 (道可道非常道)
看板Programming
标题[请益] 程式写法与效率问题
时间Sun Jan 3 11:03:18 2010
#1
if (strpos($folder, ": ") === false) continue;
else {
$find = substr($folder, 0, strpos($folder, ": "));
$replace = substr($folder, strpos($folder, ": ") + 2);
}
#2
if (($p=strpos($folder, ": ")) === false) continue;
else {
$find = substr($folder, 0, $p);
$replace = substr($folder, $p + 2);
}
如题,
使用 php,
以上同一效果的二个写法,後续只需要用 $find 和 $replace, $p 用不到,
实测在约15次以下前者快,以上後者快,
可是我的程式可能跑这个部分的次数不多,
应选何者较优?
#1
txt = txt.replace(/\r\n?/g,'\n');
#2
txt = txt.split('\r\n').join('\n').split('\r').join('\n');
#3
txt = txt.replaceAll('\r\n','\n').replaceAll('\r','\n');
String.prototype.replaceAll = function(r,n) {
return this.split(r).join(n);
}
如题,以上用 javascript 统一换行字元,一种用 regexp,一种用split+join,
何者较建议使用?
还有在下用以下程式码实测时,有时跳出的数字差很多是为什麽?
(比如一次 4ms,一次 36 ms,有时还会跳出负值)
var t = new Date();
var txt = document.getElementById('input').innerHTML; // input 填一段字串
var I = 100000;
for (var i=0;i<I;++i){
txt = txt.replace(/\r\n?/g,'\n');
//txt = txt.split('\r\n').join('\n').split('\r').join('\n');
//txt = txt.replaceAll('\r\n','\n').replaceAll('\r','\n');
}
var s = (new Date()-t) + 'ms';
alert(s);
以上问题在下需求很简单,
就是用尽可能效率佳但尚不致太难维护的程式码达到相同效果。
如果要看情况,烦请列举不同常见情况下的不同考量,感谢感谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.45.58.108
※ 编辑: danny0838 来自: 114.45.58.108 (01/03 11:11)
1F:→ MOONRAKER:因为测试无聊到连电脑都烦了 59.120.168.228 01/03 20:38
2F:→ MOONRAKER:所以就随便报个数字 59.120.168.228 01/03 20:38
3F:→ MOONRAKER:又不是对100000个不同textclip测试 59.120.168.228 01/03 20:38
4F:→ MOONRAKER:这种做100000次的测试有啥用… 59.120.168.228 01/03 20:38
5F:推 buganini:php第二个一开始加上$p=0;呢 220.135.231.23 01/03 21:19
6F:推 buganini:Date()可以直接相减吗? 不用.getTime() ? 220.135.231.23 01/03 21:27
7F:→ buganini:javascript cache的因素不小.. 220.135.231.23 01/03 21:27
8F:→ buganini:php也是 一切看设定 220.135.231.23 01/03 21:27
9F:→ buganini:都做一样的内容其实不准 220.135.231.23 01/03 21:27
10F:推 bob123:php那边可用strtok来去掉复制字串的动作 59.126.66.114 01/03 23:40