gpt4 book ai didi

java - StringTemplate 比普通字符串连接慢?

转载 作者:行者123 更新时间:2023-12-01 07:40:16 25 4
gpt4 key购买 nike

StringTemplate insert = new StringTemplate("insert $table$ values($value;separator=\",\"$)");
int testSize = 10000;
for(int i=0;i<testSize;i++) {
insert.setAttribute("table", "aTable");
String[] vs = {"1", "1", "'aaa'", "'bbb'"};
for(int j = 0;j < vs.length;j++){
insert.setAttribute("value", vs[j]);
}
insert.toString();
insert.reset();
}

上面的速度比普通 StringBuilder 慢大约 5 倍......

int testSize = 10000;
StringBuilder sb= new StringBuilder(100);
for(int i=0; i<testSize; i++) {
sb.append("INSERT ").append("aTable (");
String[] v = {"1", "1", "'aaa'", "'bbb'"};
for(int j=0; j<v.length; j++) {
if(j > 0) {
sb.append(",");
}
sb.append(v[j]);
}
sb.append(")");
sb.toString();
}

关于如何提高 StringTemplate 的效率有什么想法或建议吗?谢谢! StringTemplate 似乎在每个标记上调用 toString(),对吗?

最佳答案

我认为您无法从如此小的测试中得出有效的性能结论;它在现实世界中的使用表现如何?

在底层,StringTemplate 必须做更多的工作,而不仅仅是像您一样天真地使用 StringBuilder(它需要构造抽象语法树、遍历它们、渲染文本等),这可能会增加开销。您还没有提到您正在使用的 StringTemplate 版本;据说 StringTemplate 4 比以前的版本快得多,部分原因是它涉及直接 translation to bytecode

一般来说,在性能和可维护性、可读性和重用性之间需要进行权衡。如果 StringTemplate 对于您的目的来说足够快,我认为它的好处远远超过它的问题。

关于java - StringTemplate 比普通字符串连接慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5816889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com