Re: [J2SE] String padding 的問題
忽然覺得我好無聊 @_@
把目前板上全部的實作整理起來,得:
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
推
04/28 13:44, , 1F
04/28 13:44, 1F
推
04/28 14:09, , 2F
04/28 14:09, 2F
→
04/28 14:46, , 3F
04/28 14:46, 3F
推
04/28 16:15, , 4F
04/28 16:15, 4F
推
04/28 19:54, , 5F
04/28 19:54, 5F
推
04/28 22:06, , 6F
04/28 22:06, 6F
→
04/30 13:52, , 7F
04/30 13:52, 7F
討論串 (同標題文章)
完整討論串 (本文為第 8 之 9 篇):