Java 为什么JSON解析变得越来越高效?
我有一个在android中解析JSON的函数。我使用Java 为什么JSON解析变得越来越高效?,java,android,json,caching,jsonparser,Java,Android,Json,Caching,Jsonparser,我有一个在android中解析JSON的函数。我使用org.json进行解析 是这样的: class ClassName { public static ArrayList<DataObjectClass> parseResponse(String response){ JSONObject responseObject = new JSONObject(response); if(responseObject.has("someArray")){
org.json
进行解析
是这样的:
class ClassName {
public static ArrayList<DataObjectClass> parseResponse(String response){
JSONObject responseObject = new JSONObject(response);
if(responseObject.has("someArray")){
JSONArray someArray = responseObject.getJSONArray("someArray");
// etc... etc... and i do logic
}
}
return new DataObjectClass(params...)
}
类名{
公共静态ArrayList parseResponse(字符串响应){
JSONObject responseObject=新的JSONObject(响应);
if(responseObject.has(“someArray”)){
JSONArray someArray=responseObject.getJSONArray(“someArray”);
//等等…等等…我做逻辑
}
}
返回新的DataObjectClass(参数…)
}
现在,我从开始到结束对解析进行计时,每次我再次调用该函数,解析时间都会缩短(除非我退出应用程序并再次访问)
我检查了
JSONTokener
代码和JSONObject
代码,但找不到任何用于缓存的代码。这种情况发生在哪里?我如何关闭它(出于测试目的)这可能与ART(android运行时)如何运行代码有关
发件人:
Android运行时(ART)包括一个即时(JIT)编译器,该编译器具有代码分析功能,可在Android应用程序运行时不断提高其性能。JIT编译器补充了ART当前的提前(AOT)编译器,提高了运行时性能,节省了存储空间,加快了应用程序和系统更新。它还改进了AOT编译器,避免了自动应用程序更新期间的系统减速,或在空中传送(OTA)更新期间重新编译应用程序
尽管JIT和AOT使用相同的编译器进行类似的优化,但生成的代码可能不完全相同。JIT利用了运行时类型信息,可以更好地进行内联,并使堆栈替换(OSR)编译成为可能,所有这些都会生成略有不同的代码
这意味着每次运行ART代码时,它都会分析它是如何运行的,以及如何改进它。当你退出你的应用程序时,所有的数据都会丢失,它会重新启动。这在所有JVM(Java虚拟机)应用程序中都很常见
为什么JSON解析变得越来越高效
这就是即时编译器的本质
他们理解(通过某种形式的分析,或者有时:简单地计算方法调用)代码的哪些部分是性能关键的。在某个时刻,他们会进来,并将java字节码翻译成本地机器代码
换句话说:最有可能的情况是,当您的代码“足够频繁”地执行某些操作时,JIT会在某个时候(可能是逐渐地,分多个步骤)将其重新编译为越来越优化的(机器代码)表示