《表2 不同算法读取前兆数据的运行速度比较》

《表2 不同算法读取前兆数据的运行速度比较》   提示:宽带有限、当前游客访问压缩模式
本系列图表出处文件名:随高清版一同展现
《云南地震前兆数据库性能分析及优化处理方案》


  1. 获取 高清版本忘记账户?点击这里登录
  1. 下载图表忘记账户?点击这里登录

前兆数据库中存储前兆数据的字段为obsValue,该字段保存了一天的前兆观测值序列。以分钟值为例,观测值数据以ASCII字符形式存放,一天1 440个分钟值数据按采样次序连接起来,数据之间用空格分隔,可以得到观测值序列。系列中缺测数据用NULL表示,全天缺数时可用NULLALL表示(周克昌等,2010)。这种存储方式在数据库中称为Clob格式。对该序列的解码过程比较简单,只需按空格分隔前兆数据序列即可完成。李井冈等(2008)对前兆数据库存取的数据(Clob格式)进行了存取效果研究,结果显示读取一年的分钟值数据需要7.85 s,如果对obsValue字段采用Blob格式存储(float型观测数据转换为字节),速度可以提高到2.82 s。按上述流程编写测试软件,最初得到的结果与前兆台网处理软件的运行时间相当,同时也与李井冈等的研究结果一致。通过分析认为影响软件运行时间的主要原因是需要判断每一个前兆数据是否缺数,为了达到此目的需要实现一个循环,该循环算法对每一个通过循环主体的前兆数据进行判断,此判断过程非常耗时;另外绘制过程也比较耗时,原因同样是因为绘制前兆数据时需要判断数据是否缺数。通过改进并优化循环算法,比如将循环量较大的一维循环分解为循环量较小的二维循环,测试结果有了较大改善,结果见表2。从表2可以看到,即使使用了优化算法,读取前兆数据库的时间依旧长于读取测震数据库的时间,从算法复杂度方面分析认为主要原因在于显示前兆数据时不需要绘制缺失数据,而读取测震数据时可以采用缺数默认为0的方式进行处理,此种处理方式无需对数据进行判断,所以运行速度比较快速。