Tôi có tệp 8 Meg. Marshalling sử dụng JAXB mất 1082ms, sử dụng DOM mất 862ms, sử dụng SAX mất 438ms. Điều này đang sử dụng tất cả các giá trị mặc định với JDK 1.6, không sử dụng cấu hình bổ sung nào như sử dụng woodstox.Làm cho JAXB đi nhanh hơn
Trong một nỗ lực, để có được hiệu suất tốt hơn từ JAXB, tôi cố gắng để làm cho nó sử dụng SAX phân tích cú pháp bằng cách làm ...
FileReader fr = new FileReader("myfile.xml");
JAXBContext jc = JAXBContext.newInstance(MyObjectList.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
XMLInputFactory xmlif = XMLInputFactory.newInstance();
XMLEventReader xmler = xmlif.createXMLEventReader(fr);
long beginTime = System.currentTimeMillis();
MyObjectList obj = (MyObjectList)unmarshaller.unmarshal(xmler);
long endTime = System.currentTimeMillis();
này làm cho nó đi thậm chí chậm hơn - 3207ms.
Câu hỏi của tôi là: 1. Làm cách nào để làm cho JAXB hoạt động nhanh hơn? 2. Làm thế nào tôi có thể chắc chắn 100% cơ chế phân tích cú pháp cơ bản mà nó đang sử dụng?
+1 cho EclipseLink MOXY (Tôi là người dẫn đầu công nghệ). MOXy tương thích với JAXB 2.1 & 2.2. Để biết thông tin về việc sử dụng nó như nhà cung cấp của bạn, hãy xem: http://blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html. Hãy nhớ xem bản phát hành 2.3.2 mới nhất của chúng tôi: http://www.eclipse.org/eclipselink/downloads/. JiBX không phải là triển khai JAXB. –