作者godfat (godfat 真常)
看板java
標題Re: [J2SE] String padding 的問題
時間Mon Apr 28 12:51:37 2008
忽然覺得我好無聊 @_@
把目前板上全部的實作整理起來,得:
godfat ~/p/t/padding> javac Padding.java
godfat ~/p/t/padding> java -server Padding
Padder_silver8250: 1297 ms.
Padder_godfat_fill: 965 ms.
Padder_infinitlee: 6550 ms.
Padder_godfat_pre: 661 ms.
Padder_pao0111: 628 ms.
Padder_godfat_buf: 533 ms.
※ 引述《pao0111 (理想絕非空想)》之銘言:
最後一個 buf 是改自您的 @_@
class Padder_godfat_buf extends Padder{
private char[] buffer = new char[0];
public String pad(String str, char ch, int size){
if(buffer.length < size) buffer = new char[size];
if(size <= str.length()) return str;
System.arraycopy(str.toCharArray(), 0, buffer, 0, str.length());
java.util.Arrays.fill(buffer, str.length(), size, ch);
return new String(buffer);
}
}
測資是:
private static long benchmark(Padder padder){
long start = System.currentTimeMillis();
for(int i=0; i<500000; ++i)
padder.pad_spaces("abc", 50);
for(int i=0; i<500000; ++i)
padder.pad_spaces("abc", (int)(Math.random()*100));
for(int i=0; i<500000; ++i)
padder.pad_spaces("012345678901234567890123456789012345678901234567890
123456789", (int)(Math.random()*100)+20);
for(int i=0; i<500000; ++i)
padder.pad_spaces("012345678901234567890123456789012345678901234567890
123456789012345678901234567890123456789012345678901234567890123456789",
(int)(Math.random()*100)+50);
return System.currentTimeMillis() - start;
}
Padder 是:
abstract class Padder{
public String pad_spaces(String str, int size){
return pad(str, ' ', size);
}
public String pad(String str, char ch, int size){return "Not Implemented";}
}
晚點用 C++/D 寫寫看 @_@
--
By Gamers, For Gamers - from the past Interplay
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.128.121.85
推 infinitlee:泣...看到自己的程式,效能這麼差,好丟臉... 04/28 13:44
推 qrtt1:唔, 沒什麼好泣的:P 除非您的程式很依賴這個功能, 才需要泣 04/28 14:09
→ godfat:比短的話,您第一名...XD 04/28 14:46
推 silver8250:godfat 這句話真是 ... 囧 04/28 16:15
推 pao0111:g大真努力^^ 04/28 19:54
推 infinitlee:那下次寫長一點好了XD...男人最恨別人說他短 04/28 22:06
→ godfat:比時間是最長啊,別擔心 XD 04/30 13:52