硬件:CPU P4赛扬2.2G,内存512M
操作系统:Windows XP SP2
数据库:Access2002
软件环境:JDK1.4,Eclipse3.01
数据库采用JDBC-ODBC桥的方式连接,XML的访问采用SAX方式。性能参数如下:
记录数 | XML读取时间(毫秒) | 数据库读取时间(毫秒) |
100 | 156 | 94 |
1000 | 500 | 93 |
3000 | 828 | 94 |
5000 | 1000 | 109 |
10000 | 1485 | 94 |
100000 | 9172 | 125 |
很明显,数据库的性能大大超过XML,XML的数据量在超过10000条记录时访问时间超过了1秒,性能难以承受。而数据库对数据量的增加不太敏感。
几点说明:
1. Access数据库对于大数据量的数据是不够的,要测试海量数据最好使用SqlServer之类的专业数据库;
2. JDBC-ODBC桥的方式是数据库访问方式中效率最低的,也就是说采用其他方式还可以进一步提高数据库的性能。
3. XML的访问我不是直接写SAX代码得到的,而是通过EMF(Eclipse Model Framework)自动生成的代码得到的,这样函数调用的层数增多了,对性能有一些影响,不过影响不会太大,对于IO来说,函数跳转的时间可以忽略不计。
4. XML应该适合小量的数据存储,最好少于10000条记录,这样访问时间可以保持在2秒以下,勉强可以接受。
希望这组数据可以对使用XML作为数据源的人提供一点启示。