You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
XML is not usually the best choice when selecting a data format for a high-performance service. JSON, BSON, and binary-encoded ASN.1, among many other alternatives, are significantly more efficient for parsing and transmission. However, handling XML is often necessary to ensure compatibility with third-party services, legacy components, and existing standards.
Around 2015, while testing several open-source XML libraries for an IoT project in the oil and gas sector, I decided to implement and optimize my own XML parser. While the performance of existing libraries was acceptable, resource consumption, primarily CPU and memory, was excessive. My target was low-end microcomputers powered by solar panels. Reducing CPU usage was necessary to conserve battery power. Otherwise, I would have had to use larger solar panels and higher-capacity batteries. I was using my own JVM, similar to Java ME, designed for resource-constrained devices. Most of the runtime was already optimized.
The simplest way to speed up the XML parser was to remove support for uncommon encodings and unnecessary features. This resolved the bottleneck, but the XML parser became incompatible with general-purpose XML files. It took several years to address these limitations and deliver a lightweight XML parser that was fully compliant with Java's XML standards: SAX, SAX2 and StAX. This is how CelerXML was born.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
XML is not usually the best choice when selecting a data format for a high-performance service. JSON, BSON, and binary-encoded ASN.1, among many other alternatives, are significantly more efficient for parsing and transmission. However, handling XML is often necessary to ensure compatibility with third-party services, legacy components, and existing standards.
Around 2015, while testing several open-source XML libraries for an IoT project in the oil and gas sector, I decided to implement and optimize my own XML parser. While the performance of existing libraries was acceptable, resource consumption, primarily CPU and memory, was excessive. My target was low-end microcomputers powered by solar panels. Reducing CPU usage was necessary to conserve battery power. Otherwise, I would have had to use larger solar panels and higher-capacity batteries. I was using my own JVM, similar to Java ME, designed for resource-constrained devices. Most of the runtime was already optimized.
The simplest way to speed up the XML parser was to remove support for uncommon encodings and unnecessary features. This resolved the bottleneck, but the XML parser became incompatible with general-purpose XML files. It took several years to address these limitations and deliver a lightweight XML parser that was fully compliant with Java's XML standards: SAX, SAX2 and StAX. This is how CelerXML was born.
Beta Was this translation helpful? Give feedback.
All reactions