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?
The only Ruby Library I’ve found in the last 2 weeks that seems to do
XMl output is: Ruby - XML, XSLT and XPath Tutorial
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.
Cheers,
Dan
Dan W. wrote:
The only Ruby Library I’ve found in the last 2 weeks that seems to do
XMl output is: Ruby - XML, XSLT and XPath Tutorial
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
On Fri, Oct 31, 2008 at 9:01 AM, Xin Z. [email protected] wrote:
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.
The standard answer for XML performance issues in Ruby is to switch to
libxml-ruby.
–
Avdi
Home: http://avdi.org
Developer Blog: Avdi Grimm, Code Cleric
Twitter: http://twitter.com/avdi
Journal: http://avdi.livejournal.com
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.
On Fri, Oct 31, 2008 at 10:32 AM, Xin Z. [email protected]
wrote:
Isn’t libxml-ruby is used for parsing XML? Where as I only need to
output XML.
You can build and output XML with it. See for instance the Node
documentation:
http://libxml.rubyforge.org/rdoc/classes/LibXML/XML/Node.html
–
Avdi
Home: http://avdi.org
Developer Blog: Avdi Grimm, Code Cleric
Twitter: http://twitter.com/avdi
Journal: http://avdi.livejournal.com
On Oct 31, 2008, at 7:01 AM, Xin Z. wrote:
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/
On Oct 31, 2008, at 9:32 AM, Xin Z. wrote:
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.
Have you tried some stupid simple solution like just building the
string manually?
James Edward G. II
On 31 Oct 2008, at 13:01, Xin Z. wrote:
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
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.
On Sat, Nov 01, 2008 at 03:39:01AM +0900, Mark T. wrote:
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.
On Fri, Oct 31, 2008 at 10:01:14PM +0900, Xin Z. wrote:
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:
GitHub - codahale/faster-builder: [ABANDONED] A drop-in replacement for Builder::XmlMarkup which uses libxml for speed and security.
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: gist:14196 · GitHub
Here is some example builder code:
GitHub: Let’s build from here · GitHub
I switched a template for a huge xml file from xml builder to erb and
got a threefold speed increase.