【发布时间】:2015-07-06 05:19:03
【问题描述】:
我正在编写一个 Java 解析器,它从 ASANA 服务器获取 ASANA APP 数据并对其进行解析,然后将其保存到本地数据库以获取自定义报告。我对执行此 Java 实用程序所需的时间有疑问。
我有 Java 解析器的这个子部分。当我运行它时,执行大约需要 10 秒。如果此代码在 10 秒内执行而不是一行,则如下所示:
JSONObject Project_jsonObject = (JSONObject) Project_jsonParser.parse(Project_br);
这一行在总共 10 秒中的 9 秒内执行。我怎样才能减少这个时间。任何减少时间的技术或技巧或替代方法。请帮助我,我正在等待
static File workDir = new File("C:/cygwin64/bin");
static Runtime systemShell = Runtime.getRuntime();
String project_request="curl -u 4cKDgv4O.L8Th7N8l7jADg3HRU44abmT: https://app.asana.com/api/1.0/projects/"+id_Project+"?opt_pretty";
String project_cmd = project_request;
project_cmd += " | grep 'OBJECT'";
Process ProjectshellOutput = systemShell.exec(workDir+"/"+project_cmd, null,workDir);
InputStreamReader Project_isr = new InputStreamReader(ProjectshellOutput.getInputStream());
BufferedReader Project_br = new BufferedReader (Project_isr);
JSONParser Project_jsonParser = new JSONParser();
JSONObject Project_jsonObject = (JSONObject) Project_jsonParser.parse(Project_br);
JSONObject projectdataObject= (JSONObject)Project_jsonObject.get("data");
Long project_id = (Long) projectdataObject.get("id");
System.out.println("project id is: " + project_id);
String project_created_at_dt = (String) projectdataObject.get("created_at");
System.out.println("The project created at is: " + project_created_at_dt);
String project_modified_at_dt = (String) projectdataObject.get("modified_at");
System.out.println("The project modified at is: " + project_modified_at_dt);
boolean project_public_status = (boolean) projectdataObject.get("public");
System.out.println("project public status: " + project_public_status);
String project_name = (String) projectdataObject.get("name");
System.out.println("project name is: " + project_name);
String project_notes = (String) projectdataObject.get("notes");
System.out.println("project Notes are: " + project_notes);
boolean project_archived_status = (boolean) projectdataObject.get("archived");
System.out.println("project archived status: " + project_archived_status);
JSONObject workspaceObj = (JSONObject) projectdataObject.get("workspace");
Long workspace_id = (Long) workspaceObj.get("id");
String workspace_name = (String) workspaceObj.get("name");
System.out.println("Workspace id " + workspace_id + " with workspace name " + workspace_name);
String color = (String) projectdataObject.get("color");
System.out.println("color : " + color);
JSONObject teamObj = (JSONObject) projectdataObject.get("team");
Long team_id = (Long) teamObj.get("id");
String team_name = (String) teamObj.get("name");
System.out.println("team id " + team_id + " with team name " + team_name);
【问题讨论】:
-
如果您遵循以下约定,您的代码将更易于阅读:oracle.com/technetwork/java/codeconventions-135099.html
-
究竟什么是
JSONParser? -
为什么是
opt_pretty?这是一种浪费。另外,你想用 Jackson 而不是 org.json 来处理这些东西 -
@KevinKrumwiede 看起来他正在尝试编写自己的 REST 客户端,而不仅仅是使用 Jersey 和 Jackson 或 Gson。他遇到的延迟很可能与缓慢的网络流量和网络服务有关,与他自己的代码无关。
-
@jwenting 好吧,我假设他实际上是正确的,
parse(...)方法需要这么长时间。也许这是假设太多了。