Marc Chung wrote:
Performance questions
I'm using Batik to generate charts and graphs dynamically within a servlet container. (Various data graphs, SVG size: ~4-5kb)
Currently I do this by creating an SVG, and then modifying the elements and attributes to describe my graph. Then, depending on the type of report requested (HTML or PDF), I either transcode the SVG into a PNG or I use the PrintTranscoder.print(Graphics, PageFormat, int) to embed the image into my PDF (Using the iText PDF libraries).
Do you use the Batik DOM to do this manipulation of the Document? If you don't then the whole document is "copied" into a Batik DOM Implementation (so we have CSS and other things required by SVG). This isn't usually a huge time suck but it is generally an unneeded one.
I enjoy the power of the library, but my only real problem is that it's slow. (1 second per image, 14 images / page. The PrintTranscoder takes noticeably
longer.)
What platform (OS/CPU roughly) are you running on?
Is this speed normal?
1 second per image seems slow to me. Can you post sample content? Is the 1sec for PNG output or PDF? How large a PNG (pixels) are we talking abount?
Are there ways to enhance the speed?
As you might guess there is no magic -go-really-fast switch. One is that PNG output is much slower than JPEG - I know that JPEG is not ideal for graphs but it may be something to consider.
I would really like to increase performance. Is this an appropriate use of the PrintTranscoder class?
Well it seems a little hokey to me, I would write a new transcoder subclass for the iText library. If you look at the existing transcoder examples it should give you a good idea of how to do it.
Is there another way of writing an SVG to a Graphics object?
Sure, all the image transcoders also "write an SVG to a Graphics object". You might also want to look at the pdf-transcoder that is built into Batik (using code from FOP).
Should I be cautious about the usage of the PrintTranscoder in a multithreaded environment?
You should be alright as long as you don't try and use the same document/Graphics across threads. But I don't know anything about the iText library so perhaps it has problems internally.
Thanks for any input,
Marc
-------------------------------------------------
FastQ Communications Providing Innovative Internet Solutions Since 1993
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
