Minecraft-Plugin-YinwuChat
Minecraft-Plugin-YinwuChat copied to clipboard
关于使用Gson的一个性能建议
首先,我在看 org.lintx.plugins.yinwuchat.bungee.json.InputBase
的时候发现了以下代码
public static InputBase getObject(String json){
try {
JsonParser parser = new JsonParser();
JsonElement jsonTree = parser.parse(json);
// .......
Gson gson = new Gson();
inputModel = gson.fromJson(json,new TypeToken<InputCoolQ>(){}.getType());
// .....
以下是关于 性能 的建议而不是bug提交
Gson 已经提供 JsonParser.parseString(String)
方法, 不需要new一个JsonParser
不应该每次都 new Gson()
, 这会拖慢代码执行效率, 原因是 每次生成gson都会重新生成一系列工厂
就在这生成的过程中拖慢了执行效率, 你应该使用 private static final Gson GSON_INSTANCE = new Gson();
将其存储起来, 像下面这样
public class InputBase {
private static final Gson GSON_INSTANCE = new Gson();
private static final Type INPUT_COOLQ_TYPE = new TypeToken<InputCoolQ>(){}.getType();
//.......
inputModel = GSON_INSTANCE.fromJson(json, INPUT_COOLQ_TYPE);
//.......
}
虽然这只是一个类,但是我推荐你查找每个类似的地方,都将其替换掉,为了性能考虑