作者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)
→ MOONRAKER:因為測試無聊到連電腦都煩了 59.120.168.228 01/03 20:38
→ MOONRAKER:所以就隨便報個數字 59.120.168.228 01/03 20:38
→ MOONRAKER:又不是對100000個不同textclip測試 59.120.168.228 01/03 20:38
→ MOONRAKER:這種做100000次的測試有啥用… 59.120.168.228 01/03 20:38
推 buganini:php第二個一開始加上$p=0;呢 220.135.231.23 01/03 21:19
推 buganini:Date()可以直接相減嗎? 不用.getTime() ? 220.135.231.23 01/03 21:27
→ buganini:javascript cache的因素不小.. 220.135.231.23 01/03 21:27
→ buganini:php也是 一切看設定 220.135.231.23 01/03 21:27
→ buganini:都做一樣的內容其實不準 220.135.231.23 01/03 21:27
推 bob123:php那邊可用strtok來去掉複製字串的動作 59.126.66.114 01/03 23:40