XML builder performance

X

Xin Zheng

Hi all,

I have been doing some performance testing, and have noticed it takes
significantly longer to render a XML output then a HTML one. It made me
think perhaps there's a faster way of generating XML than using XML
builder.

I did a quick search and did not find any alternatives, or anyone
talking about XML builder's performance issues.

Is there anyway of optimizing XML Builder? Or is there a faster
alternative?
 
X

Xin Zheng

Dan said:
The only Ruby Library I've found in the last 2 weeks that seems to do
XMl output is: http://www.tutorialspoint.com/ruby/ruby_xml_xslt.htm

However the builder API is nice and for me personally worth the slightly
longer output. However saying that I managed to output 100 records to
XML within 10 seconds and I don't think it's builder slowing things
down.

Thanks for the reply.

I'm using it to output KML on the fly, so every half a second counts. At
the moment, it's taking .5 seconds longer to generate a small-ish file
than it takes for the HTML output.

If there are no clear drop-in alternatives, I might leave off optimising
my KML outputs.

Thanks,
Xin
 
A

Avdi Grimm

X

Xin Zheng

The standard answer for XML performance issues in Ruby is to switch to
libxml-ruby.

Isn't libxml-ruby is used for parsing XML? Where as I only need to
output XML.
 
J

James Gray

Isn't libxml-ruby is used for parsing XML? Where as I only need to
output XML.

Have you tried some stupid simple solution like just building the
string manually?

James Edward Gray II
 
A

ara.t.howard

Hi all,

I have been doing some performance testing, and have noticed it takes
significantly longer to render a XML output then a HTML one. It made
me
think perhaps there's a faster way of generating XML than using XML
builder.

I did a quick search and did not find any alternatives, or anyone
talking about XML builder's performance issues.

Is there anyway of optimizing XML Builder? Or is there a faster
alternative?

try tagz

# gem install tagz

require 'tagz'


xml = Tagz{ foo_{ bar_:)key => :value){ 42 } } }

http://codeforpeople.com/lib/ruby/tagz/tagz-4.4.0/README

a @ http://codeforpeople.com/
 
F

Frederick Cheung

Hi all,

I have been doing some performance testing, and have noticed it takes
significantly longer to render a XML output then a HTML one. It made
me
think perhaps there's a faster way of generating XML than using XML
builder.

I did a quick search and did not find any alternatives, or anyone
talking about XML builder's performance issues.

Is there anyway of optimizing XML Builder? Or is there a faster
alternative?

I remember looking at this a while back and it turns out that a
significant bottleneck is how builder escapes your text (look in the
builder source for to_xs). It's doing a lot more that it has too
(although I don't deny that a lot of the time that will be useful).
There's a gem (fast_xs) which implements that in C and makes that
bottleneck a lot faster.

Fred
 
M

Mark Thomas

I agree with Avdi. LibXML will be the fastest builder-library
solution.

If you want a friendlier interface you can try Nokogiri (http://
nokogiri.rubyforge.org/) which is a wrapper for LibXML.

-- Mark.
 
A

Aaron Patterson

Hi all,

I have been doing some performance testing, and have noticed it takes
significantly longer to render a XML output then a HTML one. It made me
think perhaps there's a faster way of generating XML than using XML
builder.

I did a quick search and did not find any alternatives, or anyone
talking about XML builder's performance issues.

Is there anyway of optimizing XML Builder? Or is there a faster
alternative?

How large are the documents you're trying to build? If they are small,
I recommend faster-builder:

http://github.com/codahale/faster-builder/tree/master

Unfortunately its speed diminshes a lot as the number of nodes increase.
If the documents are large, you should try Nokogiri's builder. I found
it to be faster for larger documents than faster-builder.

Here is my benchmark: http://gist.github.com/14196

Here is some example builder code:

http://github.com/tenderlove/nokogiri/wikis/generate
 
A

Aaron Patterson

I agree with Avdi. LibXML will be the fastest builder-library
solution.

If you want a friendlier interface you can try Nokogiri (http://
nokogiri.rubyforge.org/) which is a wrapper for LibXML.

Just so there is no confusion, Nokogiri wraps the libxml2 C library.
Not the LibXML ruby library. :)
 
S

Stefan Kroes

I switched a template for a huge xml file from xml builder to erb and
got a threefold speed increase.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,174
Messages
2,570,940
Members
47,486
Latest member
websterztechnologies01

Latest Threads

Top