OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   Re: SAX conferment parser

[ Lists Home | Date Index | Thread Index ]
  • From: Tyler Baker <tyler@infinet.com>
  • To: Usha_R2@verifone.com
  • Date: Wed, 16 Sep 1998 12:51:51 -0400

Usha_R2@verifone.com wrote:

> Hi! All,
>   I want to use the SAX method for parsing my XML files. Can anybody
> please tell me which is the best SAX conferment parser written in Java.
> I want the parser to be ONLY a SAX conferment parser i.e. it should not
> be both DOM & SAX conferment. I need this since for my application size
> is very important issue.
> Thanks in advance.
> Usha,
> K. Usha Rani

Your best bet would be to download several parsers and test them out.  Here is
the source to a SAX Timer Test I have made up for my parser (not yet released for
various non-technical reasons).  From what I have seen, Aelfred is the smallest
of the fully conformant SAX related parsers in terms of bytecodes, but XP is the
fastest in terms of speed.  In terms of memory usage, you will be much better off
with any streaming based-parser like Aelfred or XP than a tree-based parser like
IBM's XML for Java (another SAX compliant parser).

BTW, the following code takes one or two arguments.  The first argument is a URL
to the XML file you want to parse.  The second argument is the number of times
you want to parse the file.   I recommend parsing a file at least 4 times when
using a JIT because the first pass of each method is not compiled to native form
(it is interpreted) and significant time is spent in the JIT compiling the
bytecodes to native form.  Once this happens at least once, the real speed of the
parser can be assessed.

Usage would be something like:

java -Dorg.xml.sax.parser=SAX_DRIVER_CLASS_NAME Benchmark file:/foo/bar.xml 5

// Begin
import java.io.*;

import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class Benchmark {
  public static void main(String[] args) {
    try {
      Runtime rt = Runtime.getRuntime();
      int length = (args.length >= 2) ? Integer.parseInt(args[1]) : 1;

      long begin, end;
      long free;
      String input = args[0];

      HandlerBase handler = new HandlerBase();
      Parser parser;
      for (int i = 0; i < length; i++) {
        parser = ParserFactory.makeParser();
        free = rt.freeMemory();
        begin = System.currentTimeMillis();
        end = System.currentTimeMillis();
        System.out.println("Parsing Time: "  + (end - begin));
        System.out.println("Memory Used: "  + (free - rt.freeMemory()));
    } catch (Exception e) {
// End


xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo@ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo@ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@ic.ac.uk)


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS