0
オブジェクト配列のリストを使用してhtmlテーブルを構築していますが、非常に遅いです。それを最適化する方法はありますか?オブジェクト配列のリストの効率的な文字列連結
public String generateHtmlTable(List<Object[]> resultSet) {
totalRows = resultSet.size();
StringBuilder sb = new StringBuilder();
sb.append("<table width=\"900px\">");
sb.append("<tr>");
sb.append("<th width=\"10%\" align=\"left\"><b>col1</b></th>");
sb.append("<th width=\"25%\" align=\"left\"><b>col2</b></th>");
sb.append("<th width=\"20%\" align=\"left\"><b>col3</b></th>");
sb.append("<th width=\"15%\" align=\"left\"><b>col4</b></th>");
sb.append("<th width=\"10%\" align=\"left\"><b>col5</b></th>");
sb.append("<th width=\"10%\" align=\"left\"><b>col6</b></th>");
sb.append("<th width=\"10%\" align=\"left\"><b>col7</b></th>");
sb.append("<th width=\"5%\" align=\"left\"><b>col8</b></th>");
sb.append("<th width=\"5%\" align=\"left\"><b>col9</b></th>");
sb.append("</tr>");
for (Object[] row : resultSet) {
sb.append("<tr>");
for (Object cell : row) {
sb.append("<td>");
sb.append(((cell != null) ? cell.toString() : ""));
sb.append("</td>");
}
sb.append("</tr>");
rowsProcessed += 1;
}
sb.append("</table>");
return sb.toString();
}
このコードは、あなたの 'resultSet'に何千ものセル/行がない限り、遅くはありません。プロファイラを使用してコードを実行すると、実際に処理時間が最も長いものを確認できます。 –
もちろん、可読性を犠牲にして文字列を連結し、 'append()'の呼び出しを減らすことができます。 'sb.append("
フォローアップのコメント:http://stackoverflow.com/questions/5234147/why-stringbuilder-when-there-is-stringによると、 '+'を使用すると、おそらく同様に遅く/速くなります。しかし、あなたのコードが許せば、それを完全に省略し、すべてのセルを1回の呼び出しで追加することができます。それが助けになるかもしれない。 – domsson