【发布时间】:2015-09-30 10:29:00
【问题描述】:
我正在使用 java 创建以下 json 文件
JSONObject json = new JSONObject();
JSONArray vertex = new JSONArray();
for (int i = 0; i < num; i++) {
JSONObject usr1 = new JSONObject();
JSONObject usr2 = new JSONObject();
// String na="name"+i
usr1.put("type", "string");
usr1.put("value", "name" + i);
usr2.put("name", usr1);
usr2.put("_id", Integer.toString(i));
usr2.put("_type", "vertex");
// v2.put(usr2);
vertex.put(usr2);
// email
JSONObject usr3 = new JSONObject();
JSONObject usr4 = new JSONObject();
usr3.put("type", "string");
usr3.put("value", "email" + i + "@gmail.com");
usr4.put("email", usr3);
usr4.put("_id", Integer.toString(i + num));
usr4.put("_type", "vertex");
vertex.put(usr4);
}
json.put("vertex", vertex);
num 可以约为 60,000-200,000。
但是在这里我一次又一次地创建 java 对象,这非常昂贵。我希望最小化对象的创建,并且不想过多地更改代码结构。如何在不过多更改代码结构的情况下实现这一点?
我正在使用来自org.codehaus.jettison.json 包的 JSON* 类。我必须将它写入 json 对象的文件
【问题讨论】:
-
我没明白你的意思?
-
其实并不贵。如果您认为自己有性能问题(未说明),请分析您的代码以找出瓶颈所在。您几乎肯定会感到惊讶。
-
您关心的应该是代码如何接近实现所需的业务逻辑。一旦你确定你写了一段相关的代码,你就不应该被潜在的昂贵操作所困扰。当您注意到这些昂贵的操作导致性能下降时,您可能会对此感到困扰。
-
为什么不从删除 v2 和 xyz 的定义开始,因为创建的对象根本没有被使用?
-
这个问题是在 num=20000 之后它停止工作;