作者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
1F:推 infinitlee:泣...看到自己的程式,效能这麽差,好丢脸... 04/28 13:44
2F:推 qrtt1:唔, 没什麽好泣的:P 除非您的程式很依赖这个功能, 才需要泣 04/28 14:09
3F:→ godfat:比短的话,您第一名...XD 04/28 14:46
4F:推 silver8250:godfat 这句话真是 ... 囧 04/28 16:15
5F:推 pao0111:g大真努力^^ 04/28 19:54
6F:推 infinitlee:那下次写长一点好了XD...男人最恨别人说他短 04/28 22:06
7F:→ godfat:比时间是最长啊,别担心 XD 04/30 13:52