我正在使用仅将消息作为字节的队列服务,因此我需要将我的数据快速转换为格式,然后在我从队列接收工作时将其恢复为原始格式。我的数据格式是 INT、DOUBLE 和 INT[],这就是我最初的做法
//to convert to string
String[] message = { Integer.toString(number), String.valueOf(double), Arrays.toString(my_list) };
message.asString;
//to convert back
String message_without_brackets = message.replace("[", "" ).replace("]", "");
String[] temp_message = message_without_brackets.split(",");
int interger = Integer.valueOf(temp_message[0]);
double double = Double.valueOf(temp_message[1]);
int[] my_list = new int[temp_message.length-2]; //-2 because the first two entries are other data
for (int i = 2; i < temp_message.length; i++) {
my_list[i-2] = Integer.parseInt(temp_message[i].replace(" ",""));
}
这是超级丑陋的,它让我很恼火,几周后(或一个晚上的大量饮酒)我可能无法很快弄清楚这一点。就性能而言,代码并不算太差,我认为replace
是代码中最重的部分(如果我记得它大约占整体执行的 15%)。
我四处打听,发现Gson能够做到这一点更清洁,但性能现在超过了我循环的 40%(它的 Gson 本身就是这样做的):
Gson gson = new Gson();
int[] sub = { 0, 59, 16 };
Object[] values = { 0, 43.0, sub };
String output = gson.toJson(values); // => [0, 43.0,[0,59,16]]
Object[] deserialized = gson.fromJson(output, Object[].class);
System.out.println(deserialized[0]);
System.out.println(deserialized[1]);
System.out.println(deserialized[2]);
所以我想知道是否有更快的方法来获得相同的结果?我正在尝试这个问题中的一些建议,但是有没有更快的方法来做到这一点而不依赖于任何外部库,因为我的需求非常简单(如果不是,那么有没有快速的)?因为有人建议使用 Gson,所以我查看了 Json 解析器,但这是我应该寻找的还是有其他类型的库可以做到这一点?
编辑:我将其转换为字符串,因为我认为我需要这样做才能将其发送为getBytes()
,是否有任何其他格式可以更快地使用getBytes()
?