问题类型:冗余读/写
解决策略:缓存
案例分析:通过i/o信息可以发现/proc/cpuinfo被读取10次,且前九次的堆栈完全一样,说明前9次是同一个方法调用的,所以可以在获取cpuinfo的方法中,将读取的信息保存起来,下次再调用时,就不用再去文件中读取了
解决方案:
用静态数据成员将第一次读取的信息保存起来
code:
public static void getCupInfo()
{
if(mfReadCpuInfo)
{
Return;
}
try
{
FileReader fr = new FileReader("/proc/cpuinfo");
BufferedReader bufferedReader = new BufferedReader(fr);
while(true)
{
String text = bufferedReader.readLine();
if(null==text)
{
break;
}
if(text.startsWith("Processor"))
{
int index = text.indexOf(':');
if(index>1)
{
mProcessorName = text.substring(index+1,text.length());
}
}
}
}
}
读写文件 需要操作系统从用户态到内核态的切换,消耗性能