Re: AW: some XSLT benchmarks

2002-02-18 Thread scott_boag


(cross posted to xalan-dev)

> But can you use XSLTC with SAX Events?

Yes.

Some quick responses to Stefano's note...

> 5) i haven't tested Xalan Translets, which, along with compiled XML
> might be *the* way to go for Cocoon production environments

Yes, I think so.  I'm surprised that people on the Cocoon side haven't done
more experimenting with Translets.

Remember that XSLTC now implements that jaxp.xml.transformer interface, so
you should be able to Run with them fairly easily.

> 2) XT is still spectacularly fast, even if abandoned a long time ago

But not XSLT 1.0 complient... the edge cases in the spec do indeed eat
cycles.

One thing I do is compile XT on the same compiler that Xalan is compiled
with, and use it with Xerces.  (Also, with SAXON, use it with Xerces).

> is still *way* faster than Xalan (twice as fast, normally)
> worries me very much.

Yes.  Believe me that I've spent a lot of time both with the DataPower
benchmarks and in JProbe.  Some of the difference is in the serializers (I
don't think Cocoon is using Xalan's serializers anyway), which I've been
working on.  Some of the difference is probably in source tree
construction.  Probably a major difference is in the instrumentation that
Xalan provides, and the state tracking that it does.  I'm working at
improving this particular issue by using derived classes when
instrumentation is needed.

Some other performance improvements that *haven't* been checked in yet or
are on a branch:
1) General reduction of state tracking
2) Reduction of redundant expressions (4x improvement on one of the Cocoon
files that Davinum gave us, but fairly little diff on DataPower
benchmarks).
3) Serialization improvements

A major issue with Xalan is the source tree representation, which is
currently the DTM.  XSLTC uses a format very similar to the DTM (the
current DTM is partly copied from XSLTC, with development ongoing Xalan
interpretive and compiled to use the same source tree).  Even SAXON has a
DTM-like source tree, originally copied from the Xalan notion (I'm pretty
sure).  But the DTM has some serious drawbacks too (subtree pruning is
hard, and array access in Java tends to be a bit slow).

> Flamesuit on, fire at need.

Not interested in flame wars.  If you would like to discuss the technical
details of what's going on, I would be glad to.  The issues aren't simple,
though the results and the perception of the results are.

-scott




   

  Jörn Heid

 

  n.de>cc:   (bcc: Scott 
Boag/Cambridge/IBM)   
   Subject:  AW: some XSLT benchmarks  

  02/17/2002 06:25 

  PM   

  Please respond to

  cocoon-dev   

   

   





Electric XML is not SAX or DOM based. For that it won't make sense I think.
But XSLTC will be a nice alternative. But can you use XSLTC with SAX
Events?

-Ursprüngliche Nachricht-
Von: Ivanov, Ivelin [mailto:[EMAIL PROTECTED]]
Gesendet: Sonntag, 17. Februar 2002 23:21
An: 'Stefano Mazzocchi '; 'Apache Cocoon '
Cc: 'Apache Xalan '
Betreff: RE: some XSLT benchmarks



Thесе benchmarkс make it clear that Xalan J is far
from the winner.
For completeness however, wouldn't it be fare to include XSLTC as well.
Also Electric XML is a fast free parser which should probably be taken into
account. http://www.themindelectric.com/products/xml/benchmarks.html


Regards,

Ivelin

-Original Message-
From: Stefano Mazzocchi
To: Apache Cocoon
Cc: Apache Xalan
Sent: 16.2.2002 a. 10:58
Subject: some XSLT benchmarks

[crossposting on xalan-dev since they might be interested in these
results]

I want to have numbers to know whether or not a native implementation of
an XSLT transformer for Cocoon would make sense, so I did some
benchmarks.

I used XSLTMark and rerun the test on my machine (old lapto

Re: AW: some XSLT benchmarks

2002-02-18 Thread Jacek R. Ambroziak

Stefano,

A new xmdrivers.jar is attached with an updated drived for XSLTC.
You can now run your tests again.

You'll need a bunch of jars in "runxsltmark" scripts:

  XSLTCDriver)
   CLASSPATH=$WORKDIR/third-party/xalan-j/bin/BCEL.jar
   CLASSPATH=$WORKDIR/third-party/xalan-j/bin/xsltc.jar:$CLASSPATH
   CLASSPATH=$WORKDIR/third-party/xalan-j/bin/java_cup.jar:$CLASSPATH
   CLASSPATH=$WORKDIR/third-party/xalan-j/bin/JLex.jar:$CLASSPATH
   CLASSPATH=$WORKDIR/third-party/xalan-j/bin/regexp.jar:$CLASSPATH
   CLASSPATH=$WORKDIR/third-party/xalan-j/bin/runtime.jar:$CLASSPATH
;;

(regexp is from jakarta)

You may also need to modify default.conf in 'testcases' dir.
For instance I have disabled 'dbonerow' which a very long time for translets
(and I don't yet know why).

If you have any trouble with running the benchmark send me email.

--Jacek





On Monday 18 February 2002 10:22 am, [EMAIL PROTECTED] wrote:
> (cross posted to xalan-dev)
>
> > But can you use XSLTC with SAX Events?
>
> Yes.
>
> Some quick responses to Stefano's note...
>
> > 5) i haven't tested Xalan Translets, which, along with compiled XML
> > might be *the* way to go for Cocoon production environments
>
> Yes, I think so.  I'm surprised that people on the Cocoon side haven't done
> more experimenting with Translets.
>
> Remember that XSLTC now implements that jaxp.xml.transformer interface, so
> you should be able to Run with them fairly easily.
>
> > 2) XT is still spectacularly fast, even if abandoned a long time ago
>
> But not XSLT 1.0 complient... the edge cases in the spec do indeed eat
> cycles.
>
> One thing I do is compile XT on the same compiler that Xalan is compiled
> with, and use it with Xerces.  (Also, with SAXON, use it with Xerces).
>
> > is still *way* faster than Xalan (twice as fast, normally)
> > worries me very much.
>
> Yes.  Believe me that I've spent a lot of time both with the DataPower
> benchmarks and in JProbe.  Some of the difference is in the serializers (I
> don't think Cocoon is using Xalan's serializers anyway), which I've been
> working on.  Some of the difference is probably in source tree
> construction.  Probably a major difference is in the instrumentation that
> Xalan provides, and the state tracking that it does.  I'm working at
> improving this particular issue by using derived classes when
> instrumentation is needed.
>
> Some other performance improvements that *haven't* been checked in yet or
> are on a branch:
> 1) General reduction of state tracking
> 2) Reduction of redundant expressions (4x improvement on one of the Cocoon
> files that Davinum gave us, but fairly little diff on DataPower
> benchmarks).
> 3) Serialization improvements
>
> A major issue with Xalan is the source tree representation, which is
> currently the DTM.  XSLTC uses a format very similar to the DTM (the
> current DTM is partly copied from XSLTC, with development ongoing Xalan
> interpretive and compiled to use the same source tree).  Even SAXON has a
> DTM-like source tree, originally copied from the Xalan notion (I'm pretty
> sure).  But the DTM has some serious drawbacks too (subtree pruning is
> hard, and array access in Java tends to be a bit slow).
>
> > Flamesuit on, fire at need.
>
> Not interested in flame wars.  If you would like to discuss the technical
> details of what's going on, I would be glad to.  The issues aren't simple,
> though the results and the perception of the results are.
>
> -scott
>
>
>
>
>
>   Jörn Heid
><[EMAIL PROTECTED]> n.de>cc:   (bcc: Scott
> Boag/Cambridge/IBM) Subject:  AW: some XSLT benchmarks 02/17/2002 06:25
>   PM
>   Please respond to
>   cocoon-dev
>
>
>
>
>
>
> Electric XML is not SAX or DOM based. For that it won't make sense I think.
> But XSLTC will be a nice alternative. But can you use XSLTC with SAX
> Events?
>
> -Ursprüngliche Nachricht-
> Von: Ivanov, Ivelin [mailto:[EMAIL PROTECTED]]
> Gesendet: Sonntag, 17. Februar 2002 23:21
> An: 'Stefano Mazzocchi '; 'Apache Cocoon '
> Cc: 'Apache Xalan '
> Betreff: RE: some XSLT benchmarks
>
>
>
> Thесе benchmarkс make it clear that Xalan J is far
> from the winner.
> For completeness however, wouldn't it be fare to include XSLTC as well.
> Also Electric XML is a fast free parser which should probably be taken into
> account. http://www.themindelectric.com/products/xml/benchmarks.html
>
>
> Regards,
>
> Ivelin
>
> -Original Message-
> From: Stefano Mazzocchi
> To: Apache Cocoon
> Cc: Apache Xalan
> Sent: 16.2.2002 a. 10:58
> Subject: some XSLT benchmarks
>
> [crossposting on xalan-dev since they might be interested in these
> results]
>
> I want to have numbers to know whether or not a native implementation of
> an XSLT transformer for Cocoon would make sense, so I did some
> benchmarks.
>
> I used XSLTMark and rerun the test on my machine (old lap

Re: AW: some XSLT benchmarks

2002-02-18 Thread Davanum Srinivas

Scott,

FYI, Right now the Translets are unusable for C2 :(

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6312

Thanks,
dims

--- [EMAIL PROTECTED] wrote:
> > 5) i haven't tested Xalan Translets, which, along with compiled XML
> > might be *the* way to go for Cocoon production environments
> 
> Yes, I think so.  I'm surprised that people on the Cocoon side haven't done
> more experimenting with Translets.
> 
> Remember that XSLTC now implements that jaxp.xml.transformer interface, so
> you should be able to Run with them fairly easily.
> 


=
Davanum Srinivas - http://jguru.com/dims/

__
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-19 Thread Stefano Mazzocchi

"Jacek R. Ambroziak" wrote:
> 
> Stefano,
> 
> A new xmdrivers.jar is attached with an updated drived for XSLTC.
> You can now run your tests again.

Ok, ran the tests on my laptop, same hardware/software/condition as
before.

Results:

Xalan 2.3 XSLTC
---

Sun 1.3.1 [1]118,09
Sun 1.3.1 [2]257,73
Sun 1.3.1 [3]390,13
Sun 1.4.0 [3]353,04
IBM 1.3.0 [3]345,93

XT
--

Sun 1.3.1 [1]241,52
Sun 1.3.1 [2]205,10
Sun 1.3.1 [3]202,33
Sun 1.4.0 [3]193,85
IBM 1.3.0 [3]202,48

MSXML 3.0
-

Sun 1.3.1 [1]317,67
Sun 1.3.1 [2]241,40
Sun 1.3.1 [3]222,21
IBM 1.3.0 [3]221,57
Sun 1.4.0 [3]221,67

NOTES:

[1] all tests are run
[2] all tests but dbonerow (XSLTC is *very* slow on this, about 10 times
slower than XT)
[3] all tests but dbonerow, decoy, number, patterns

The third test is somewhat 'XSLTC-oriented' since I removed the tests
where it appears to be unreasonably slower (dbonerow, decoy and
patterns) and the one that triggers an exception (number) [please, guys,
fix this! I can provide stacktraces if you want]

COMMENTS:
-

XSLTC is *fast*!!! It's even faster than native code!

I also tried to see if the test (running in java) was impacting the
native performance but the three tests on the different JVMs show that
the native code has always the same performance.

MSXML gains a lot in dbonerow (10 secs vs. 200 secs, a really huge
difference! but I think this is a synchronization issue since the CPU is
not going at full speed, or could be a Java I/O problem since it's
working on the biggest file)

Final result:
-

All these processors aren't exactly top class as far as compliance goes.
If you want a compliant processor use Xalan or Saxon, no way out.

But if you want to run *fast* and you don't need to stress every
function of XSLT, but perform normal stylesheets (like normally done in
cocoon, since some of the XSLT functionality if factored out in other
places), XSLTC is *without*any*doubt* the way to go.

Interesting enough: Java 1.3 is faster than Java 1.4 (all tests were
done with client JVM, since the tests aren't long enough to benefit from
the hotspot server VM) and faster than IBM (which is normally 10% faster
than SUN 1.3 in almost anything).

I think this could be due to the hand-written java assembly code that
XSLTC generates. In fact, no decompiler is able to decompile a translet
since no javac pattern is recognized... I assume they make extensive use
of direct jumping (which is prohibited in java since 'goto' is reserved
but not used, while is allowed at the bytecode level. Too bad I don't
have time to jump into their code, but should be fun for an old assembly
freak like me :) finally able to tune the JVM bytecode by hand :)

Seriously: hand-optimized java bytecode it's a dangerous approach since
every JVM implementation is different.

Ideal should for the XSLTC engine to recognize the JVM it runs in (via
system properties) and tune the generated bytecode on the running JVM. I
assume this could give some 20/30% more speed improvement, but it's a
potentially harmful thing to do since it might duplicate code and
requires *lots* of guesses on how the JVM works internally.

Anyway, seriously, XSLTC *is* a solution to the XSLT bottleneck problem.

Now: only one thing to add: let's make it work on Cocoon.

Xalan-guys, please, can you give us a hand there?

-- 
Stefano Mazzocchi  One must still have chaos in oneself to be
  able to give birth to a dancing star.
<[EMAIL PROTECTED]> Friedrich Nietzsche


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-19 Thread Berin Loritsch

Stefano Mazzocchi wrote:
> "Jacek R. Ambroziak" wrote:
> 
> Ideal should for the XSLTC engine to recognize the JVM it runs in (via
> system properties) and tune the generated bytecode on the running JVM. I
> assume this could give some 20/30% more speed improvement, but it's a
> potentially harmful thing to do since it might duplicate code and
> requires *lots* of guesses on how the JVM works internally.
> 
> Anyway, seriously, XSLTC *is* a solution to the XSLT bottleneck problem.
> 
> Now: only one thing to add: let's make it work on Cocoon.
> 
> Xalan-guys, please, can you give us a hand there?


My question is this:  how does it _scale_.

For instance, The ECM is quite resonable with only a few threads, but in
a server environment where there can be as many as 150 or more
concurrent threads it slows down so badly it is unusable.  A fresh
approach reaping the benefits of the lessons of the ECM and Phoenix
proved that the new approach can handle the load *much* more gracefully.

I would like to see the *same* tests with 100 threads each performing
500 translations (yes they can have their own instance of the translet
in each thread as is necessary).  I would like to see that in comparison
to Xalan and Saxon.

That is the most important lesson we can learn.




Sign Up for NetZero Platinum Today
Only $9.95 per month!
http://my.netzero.net/s/signup?r=platinum&refcd=PT97

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-19 Thread Jacek Ambroziak

Stefano,

that is cool!  Except for the mysterious 'dbonerow'. I
will attempt to fix it
an in general I am going continue to follow my
original vision
to make XSLTC a good technology for people to actually
use.

You are right, there are multiple 'goto's' in the
generated bytecodes
(although the bytecodes are not hand-optimized, right?
:-)
but automatically generated), so that translets do not
correspond
to any valid Java program.  Decompiling to FORTRAN
would be a different
thing :-)  This is one of the reasons why I chose to
generate bytecodes
directly instead of Java code (which would make
compilation longer, too).

As to you other suggestions... I think a lot of time
is spent *around*
transformation, ie. first building the (special) DOM,
and then
serializing (or otherwise using) transformation
output.
In other words, even if transformation would take
exactly 0 ms,
we'd see a lot of time going to broadly conceived of
input/output.
That's why translets shine when the same DOM objects
can be reused,
perhaps to generate different 'views' of a document,
eg. personalize)
-- at least building-the-DOM part is factored out.

Next I'd like to address 'dbonerow'; the benchmark
kills XSLTC  :-(
so that it ends the race last w/ 10 iterations of the
test.

--Jacek


--- Stefano Mazzocchi <[EMAIL PROTECTED]> wrote:
> "Jacek R. Ambroziak" wrote:
> > 
> > Stefano,
> > 
> > A new xmdrivers.jar is attached with an updated
> drived for XSLTC.
> > You can now run your tests again.
> 
> Ok, ran the tests on my laptop, same
> hardware/software/condition as
> before.
> 
> Results:
> 
> Xalan 2.3 XSLTC
> ---
> 
> Sun 1.3.1 [1]118,09
> Sun 1.3.1 [2]257,73
> Sun 1.3.1 [3]390,13
> Sun 1.4.0 [3]353,04
> IBM 1.3.0 [3]345,93
> 
> XT
> --
> 
> Sun 1.3.1 [1]241,52
> Sun 1.3.1 [2]205,10
> Sun 1.3.1 [3]202,33
> Sun 1.4.0 [3]193,85
> IBM 1.3.0 [3]202,48
> 
> MSXML 3.0
> -
> 
> Sun 1.3.1 [1]317,67
> Sun 1.3.1 [2]241,40
> Sun 1.3.1 [3]222,21
> IBM 1.3.0 [3]221,57
> Sun 1.4.0 [3]221,67
> 
> NOTES:
> 
> [1] all tests are run
> [2] all tests but dbonerow (XSLTC is *very* slow on
> this, about 10 times
> slower than XT)
> [3] all tests but dbonerow, decoy, number, patterns
> 
> The third test is somewhat 'XSLTC-oriented' since I
> removed the tests
> where it appears to be unreasonably slower
> (dbonerow, decoy and
> patterns) and the one that triggers an exception
> (number) [please, guys,
> fix this! I can provide stacktraces if you want]
> 
> COMMENTS:
> -
> 
> XSLTC is *fast*!!! It's even faster than native
> code!
> 
> I also tried to see if the test (running in java)
> was impacting the
> native performance but the three tests on the
> different JVMs show that
> the native code has always the same performance.
> 
> MSXML gains a lot in dbonerow (10 secs vs. 200 secs,
> a really huge
> difference! but I think this is a synchronization
> issue since the CPU is
> not going at full speed, or could be a Java I/O
> problem since it's
> working on the biggest file)
> 
> Final result:
> -
> 
> All these processors aren't exactly top class as far
> as compliance goes.
> If you want a compliant processor use Xalan or
> Saxon, no way out.
> 
> But if you want to run *fast* and you don't need to
> stress every
> function of XSLT, but perform normal stylesheets
> (like normally done in
> cocoon, since some of the XSLT functionality if
> factored out in other
> places), XSLTC is *without*any*doubt* the way to go.
> 
> Interesting enough: Java 1.3 is faster than Java 1.4
> (all tests were
> done with client JVM, since the tests aren't long
> enough to benefit from
> the hotspot server VM) and faster than IBM (which is
> normally 10% faster
> than SUN 1.3 in almost anything).
> 
> I think this could be due to the hand-written java
> assembly code that
> XSLTC generates. In fact, no decompiler is able to
> decompile a translet
> since no javac pattern is recognized... I assume
> they make extensive use
> of direct jumping (which is prohibited in java since
> 'goto' is reserved
> but not used, while is allowed at the bytecode
> level. Too bad I don't
> have time to jump into their code, but should be fun
> for an old assembly
> freak like me :) finally able to tune the JVM
> bytecode by hand :)
> 
> Seriously: hand-optimized java bytecode it's a
> dangerous approach since
> every JVM implementation is different.
> 
> Ideal should for the XSLTC engine to recognize the
> JVM it runs in (via
> system properties) and tune the generated bytecode
> on the running JVM. I
> assume this could give some 20/30% more speed
> improvement, but it's a
> potentially harmful thing to do since it might
> duplicate code and
> requires *lots* of guesses on how the JVM works
> internally.
> 
> Anyway, seriously, XSLTC *is* a solution to the XSLT
> bottlene

Re: AW: some XSLT benchmarks

2002-02-19 Thread Jacek Ambroziak


--- Berin Loritsch <[EMAIL PROTECTED]> wrote:
> Stefano Mazzocchi wrote:
> > "Jacek R. Ambroziak" wrote:
> > 

> > Anyway, seriously, XSLTC *is* a solution to the
> XSLT bottleneck problem.
> > 

> My question is this:  how does it _scale_.
> 

> I would like to see the *same* tests with 100
> threads each performing
> 500 translations (yes they can have their own
> instance of the translet
> in each thread as is necessary).  I would like to
> see that in comparison
> to Xalan and Saxon.
> 

Have you tested Xalan/Saxon/XSLTC in your
multithreaded environment?

I don't see a priori reasons why translets should
scale worse...

--Jacek

__
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-19 Thread Berin Loritsch

Jacek Ambroziak wrote:
> --- Berin Loritsch <[EMAIL PROTECTED]> wrote:
> 
>>Stefano Mazzocchi wrote:
>>
>>>"Jacek R. Ambroziak" wrote:
>>>
>>>
> 
>>>Anyway, seriously, XSLTC *is* a solution to the
>>>
>>XSLT bottleneck problem.
>>
> 
>>My question is this:  how does it _scale_.
>>
>>
> 
>>I would like to see the *same* tests with 100
>>threads each performing
>>500 translations (yes they can have their own
>>instance of the translet
>>in each thread as is necessary).  I would like to
>>see that in comparison
>>to Xalan and Saxon.
>>
>>
> 
> Have you tested Xalan/Saxon/XSLTC in your
> multithreaded environment?
> 
> I don't see a priori reasons why translets should
> scale worse...


I have run Xalan and Saxon (As have just about every other
Cocooner).  For the low volume highly personalized webapps
I generally create, it is ok.  However, I have seen much
room for improvement--server side caching helps.





Sign Up for NetZero Platinum Today
Only $9.95 per month!
http://my.netzero.net/s/signup?r=platinum&refcd=PT97

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




RE: AW: some XSLT benchmarks

2002-02-19 Thread MORAVEK Peter

> Results:
> Xalan 2.3 XSLTC
> XT
> MSXML 3.0

And what about SAXON and MSXML 4.0 ? How are the results of the benchmarks
with these two transformers ?

Thanks

Peter


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-20 Thread Stefano Mazzocchi

MORAVEK Peter wrote:
> 
> > Results:
> > Xalan 2.3 XSLTC
> > XT
> > MSXML 3.0
> 
> And what about SAXON and MSXML 4.0 ? How are the results of the benchmarks
> with these two transformers ?

Saxon was way slower (around 100, check my previous post on the matter)

I couldn't test MSXML 4.0 because I didn't have a suitable driver for
XSLTMark, if you write one for me I'll redo the tests as well :)

-- 
Stefano Mazzocchi  One must still have chaos in oneself to be
  able to give birth to a dancing star.
<[EMAIL PROTECTED]> Friedrich Nietzsche




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-20 Thread Jacek Ambroziak

No assumptions about JVMs have been made;
in fact translets used to run faster on IBM's VMs
(esp. 1.1.8) which was a bit embarassing for me
as a Sun-er at the time.

I am sure translets can be further optimized
but JVM tuning would be the last (if at all) place
to look at, maybe except for small devices.

--Jacek


--- Stefano Mazzocchi <[EMAIL PROTECTED]> wrote:
> Jacek Ambroziak wrote:
> > 
> > Stefano,
> > 
> > that is cool!  Except for the mysterious
> 'dbonerow'. I
> > will attempt to fix it
> > an in general I am going continue to follow my
> > original vision
> > to make XSLTC a good technology for people to
> actually
> > use.
> 
> Cool.
> 
> > You are right, there are multiple 'goto's' in the
> > generated bytecodes
> > (although the bytecodes are not hand-optimized,
> right?
> > :-)
> > but automatically generated)
> 
> yes, automatically generated, but the 'XSLT to
> bytecode' patterns have
> been manually crafted, right? and I'm pretty sure
> that you guys crafted
> them based on the assumption on how the underlying
> JVM was going to
> interpret them. Which shows why it is faster on the
> Sun 1.3.1 JVM (but
> this is just my hypotesis)
> 
> My point was: it would be cool to implement a way
> for the 'XSLT 2
> bytecode' patterns to be choosen based on the JVM
> system that is
> currently running (or using a configurations, for
> those translets that
> have to be deployed on platforms different from
> where the translet
> assembly takes place)
> 
> >, so that translets do not
> > correspond
> > to any valid Java program.  Decompiling to FORTRAN
> > would be a different
> > thing :-)  This is one of the reasons why I chose
> to
> > generate bytecodes
> > directly instead of Java code (which would make
> > compilation longer, too).
> 
> Yes, this is a very intriguing technology and I
> think it would be a
> valuable tool for speed-optimizing java code for
> specific cases.
>  
> > As to you other suggestions... I think a lot of
> time
> > is spent *around*
> > transformation, ie. first building the (special)
> DOM,
> > and then
> > serializing (or otherwise using) transformation
> > output.
> > In other words, even if transformation would take
> > exactly 0 ms,
> > we'd see a lot of time going to broadly conceived
> of
> > input/output.
> > That's why translets shine when the same DOM
> objects
> > can be reused,
> > perhaps to generate different 'views' of a
> document,
> > eg. personalize)
> > -- at least building-the-DOM part is factored out.
> 
> Good point.
>  
> > Next I'd like to address 'dbonerow'; the benchmark
> > kills XSLTC  :-(
> > so that it ends the race last w/ 10 iterations of
> the
> > test.
> 
> Please look also into the 'numbers' test that throws
> an exception
> also you might want to run the test to see why there
> are some invalid
> results out of the transformation (compliancy is
> less than Xalan's)
> 
> -- 
> Stefano Mazzocchi  One must still have chaos in
> oneself to be
>   able to give birth to a
> dancing star.
> <[EMAIL PROTECTED]>
> Friedrich Nietzsche
>

> 
> 

__
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com



Re: AW: some XSLT benchmarks

2002-02-20 Thread Stefano Mazzocchi

Jacek Ambroziak wrote:
> 
> Stefano,
> 
> that is cool!  Except for the mysterious 'dbonerow'. I
> will attempt to fix it
> an in general I am going continue to follow my
> original vision
> to make XSLTC a good technology for people to actually
> use.

Cool.

> You are right, there are multiple 'goto's' in the
> generated bytecodes
> (although the bytecodes are not hand-optimized, right?
> :-)
> but automatically generated)

yes, automatically generated, but the 'XSLT to bytecode' patterns have
been manually crafted, right? and I'm pretty sure that you guys crafted
them based on the assumption on how the underlying JVM was going to
interpret them. Which shows why it is faster on the Sun 1.3.1 JVM (but
this is just my hypotesis)

My point was: it would be cool to implement a way for the 'XSLT 2
bytecode' patterns to be choosen based on the JVM system that is
currently running (or using a configurations, for those translets that
have to be deployed on platforms different from where the translet
assembly takes place)

>, so that translets do not
> correspond
> to any valid Java program.  Decompiling to FORTRAN
> would be a different
> thing :-)  This is one of the reasons why I chose to
> generate bytecodes
> directly instead of Java code (which would make
> compilation longer, too).

Yes, this is a very intriguing technology and I think it would be a
valuable tool for speed-optimizing java code for specific cases.
 
> As to you other suggestions... I think a lot of time
> is spent *around*
> transformation, ie. first building the (special) DOM,
> and then
> serializing (or otherwise using) transformation
> output.
> In other words, even if transformation would take
> exactly 0 ms,
> we'd see a lot of time going to broadly conceived of
> input/output.
> That's why translets shine when the same DOM objects
> can be reused,
> perhaps to generate different 'views' of a document,
> eg. personalize)
> -- at least building-the-DOM part is factored out.

Good point.
 
> Next I'd like to address 'dbonerow'; the benchmark
> kills XSLTC  :-(
> so that it ends the race last w/ 10 iterations of the
> test.

Please look also into the 'numbers' test that throws an exception
also you might want to run the test to see why there are some invalid
results out of the transformation (compliancy is less than Xalan's)

-- 
Stefano Mazzocchi  One must still have chaos in oneself to be
  able to give birth to a dancing star.
<[EMAIL PROTECTED]> Friedrich Nietzsche




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-20 Thread Stefano Mazzocchi

Santiago Pericas wrote:
> 
> > yes, automatically generated, but the 'XSLT to bytecode' patterns have
> > been manually crafted, right? and I'm pretty sure that you guys crafted
> > them based on the assumption on how the underlying JVM was going to
> > interpret them. Which shows why it is faster on the Sun 1.3.1 JVM (but
> > this is just my hypotesis)
> 
>   I think this is more of a coincidence. 

Ah

> Translets try to allocate as few
> objects as possible. Other JVM's may be better optimized for object
> creation/initialization. Sun's, on the other hand, does a pretty good
> job finding the "hot spots" and this could be the reason why translets
> run fast.

yes, the 'bytecode tight loops' that translets have might really use the
power of hotspot.

>   As to why 1.4 is slower? This is puzzling. 

This is the reason why I didn't think of hotspot vs. IBM JIT. ASAIK, 1.4
uses the same code (tuned) of 1.3.1

> The first thing that comes
> to mind is the new assertion mechanism but, as far as I know, it is
> completely turned off by default (or isn't?).

They should be.

-- 
Stefano Mazzocchi  One must still have chaos in oneself to be
  able to give birth to a dancing star.
<[EMAIL PROTECTED]> Friedrich Nietzsche


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-20 Thread Jacek Ambroziak

You guys may find another data point interesting...

(I am using Sun's newest 1.4 on Linux)

I reran the test with '-verbosegc' flag gathering GC
info into files.
and then counted Full garbage collections

grep Full gcXSLTC | wc -l
grep Full gcXT| wc -l

and so on.

The results:

XSLTC21
XT  140
Saxon   308
Xajan2J 349

In terms of total GCs (full & incr.) 


   2177 gcXT
   3466 gcXSLTC
   3931 gcXalanJ
   4562 gcSaxon

Ratios full GCs/all GCs:

XSLTC  0.006
XT 0.064
Saxon  0.067
XalanJ 0.089

Incemental GCc (for which JVMs optimize) are about 2
orders
of magnitude faster, so It Is A Good Thing  :-) if the
majority of
GC work can be taken care of via incremental GC.

The fewer GCs improve performance in a number of ways.
Especially

1) when memory is scarce anyway: PDA, cell phone
2) when on a server XSLT is put to truly heavy duty
   transformation work (heavy load)

--Jacek

__
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-20 Thread scott_boag


Yes, I agree with Berin on this, though I also agree with Jacek that
there's little reason that it should not scale well.

Another factor is "incremental" output, which Xalan interpretive does a lot
of work to do well (and tends to take penalty for), and XSLTC may have a
much harder time at.  On the other hand, especially given cacheing,
incrementality may not matter at all.  On the other hand, given Cocoon
pipelines, it may matter a lot.

(Hopefully, XSLTC can eventually be given incremental capabilities...
though certainly not at the expense of any performance).

I would like to eventually see much more sophisticated benchmarks than
XSLTMark, which I think only tells about 20% of the performance story.

-scott




   

  Berin Loritsch   

  cc:   "Jacek R. Ambroziak" 
<[EMAIL PROTECTED]>, [EMAIL PROTECTED],   
[EMAIL PROTECTED], Santiago 
Pericas <[EMAIL PROTECTED]> 
  02/19/2002 11:22 Subject:  Re: AW: some XSLT benchmarks  

  PM   

  Please respond to

  xalan-dev

   

   





Stefano Mazzocchi wrote:
> "Jacek R. Ambroziak" wrote:
>
> Ideal should for the XSLTC engine to recognize the JVM it runs in (via
> system properties) and tune the generated bytecode on the running JVM. I
> assume this could give some 20/30% more speed improvement, but it's a
> potentially harmful thing to do since it might duplicate code and
> requires *lots* of guesses on how the JVM works internally.
>
> Anyway, seriously, XSLTC *is* a solution to the XSLT bottleneck problem.
>
> Now: only one thing to add: let's make it work on Cocoon.
>
> Xalan-guys, please, can you give us a hand there?


My question is this:  how does it _scale_.

For instance, The ECM is quite resonable with only a few threads, but in
a server environment where there can be as many as 150 or more
concurrent threads it slows down so badly it is unusable.  A fresh
approach reaping the benefits of the lessons of the ECM and Phoenix
proved that the new approach can handle the load *much* more gracefully.

I would like to see the *same* tests with 100 threads each performing
500 translations (yes they can have their own instance of the translet
in each thread as is necessary).  I would like to see that in comparison
to Xalan and Saxon.

That is the most important lesson we can learn.




Sign Up for NetZero Platinum Today
Only $9.95 per month!
http://my.netzero.net/s/signup?r=platinum&refcd=PT97





-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-20 Thread Santiago Pericas

> yes, automatically generated, but the 'XSLT to bytecode' patterns have
> been manually crafted, right? and I'm pretty sure that you guys crafted
> them based on the assumption on how the underlying JVM was going to
> interpret them. Which shows why it is faster on the Sun 1.3.1 JVM (but
> this is just my hypotesis)

  I think this is more of a coincidence. Translets try to allocate as few 
objects as possible. Other JVM's may be better optimized for object 
creation/initialization. Sun's, on the other hand, does a pretty good 
job finding the "hot spots" and this could be the reason why translets 
run fast.
  As to why 1.4 is slower? This is puzzling. The first thing that comes 
to mind is the new assertion mechanism but, as far as I know, it is 
completely turned off by default (or isn't?).

-- Santiago Pericas


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-20 Thread Berin Loritsch

Santiago Pericas wrote:
>> yes, automatically generated, but the 'XSLT to bytecode' patterns have
>> been manually crafted, right? and I'm pretty sure that you guys crafted
>> them based on the assumption on how the underlying JVM was going to
>> interpret them. Which shows why it is faster on the Sun 1.3.1 JVM (but
>> this is just my hypotesis)
> 
> 
>  I think this is more of a coincidence. Translets try to allocate as few 
> objects as possible. Other JVM's may be better optimized for object 
> creation/initialization. Sun's, on the other hand, does a pretty good 
> job finding the "hot spots" and this could be the reason why translets 
> run fast.
>  As to why 1.4 is slower? This is puzzling. The first thing that comes 
> to mind is the new assertion mechanism but, as far as I know, it is 
> completely turned off by default (or isn't?).

Yes it is.  It is also only compiled in if you use the -source 1.4
parameter on javac.



-- 

"They that give up essential liberty to obtain a little temporary safety
  deserve neither liberty nor safety."
 - Benjamin Franklin


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-20 Thread Stefano Mazzocchi

[EMAIL PROTECTED] wrote:
> 
> Yes, I agree with Berin on this, though I also agree with Jacek that
> there's little reason that it should not scale well.
> 
> Another factor is "incremental" output, which Xalan interpretive does a lot
> of work to do well (and tends to take penalty for), and XSLTC may have a
> much harder time at.  On the other hand, especially given cacheing,
> incrementality may not matter at all.  On the other hand, given Cocoon
> pipelines, it may matter a lot.
> 
> (Hopefully, XSLTC can eventually be given incremental capabilities...
> though certainly not at the expense of any performance).
> 
> I would like to eventually see much more sophisticated benchmarks than
> XSLTMark, which I think only tells about 20% of the performance story.

Well, this is the same old tune as for all benchmarks. Give me a more
sofisticated one and I'll be happy to run the tests again.

But one thing is for sure, XSLTC is way faster than Xalan and, given
choice, I would use the first for performance-critical applications.

No offense, of course, just the plain facts.

-- 
Stefano Mazzocchi  One must still have chaos in oneself to be
  able to give birth to a dancing star.
<[EMAIL PROTECTED]> Friedrich Nietzsche




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Re: AW: some XSLT benchmarks

2002-02-21 Thread scott_boag


> But one thing is for sure, XSLTC is way faster than Xalan and, given
> choice, I would use the first for performance-critical applications.
>
> No offense, of course, just the plain facts.

Please, Stefano.  No offense taken, and I was not trying to be defensive.
I agree 100% that XSLTC is an ideal choice for high performance
applications.  If I didn't think so it wouldn't have been brought into the
Xalan project.  We put a lot of our hopes into XSLTC.  I agree 100% with
your conclusions.

But we need to have discussions about incrementality, large document size,
and a few other issues that XSLTC may have without getting into
us-versus-them or whatever.

> Well, this is the same old tune as for all benchmarks. Give me a more
> sofisticated one and I'll be happy to run the tests again.

Sigh.  I'm not criticizing the results of the DataPower/XSLTMark
benchmarks... they tell an important story and I've been running them since
they first appeared.

-scott




   

  Stefano Mazzocchi

  <[EMAIL PROTECTED]To:   [EMAIL PROTECTED] 

  rg>  cc:   [EMAIL PROTECTED], 
(bcc: Scott Boag/Cambridge/IBM) 
               Subject:  Re: AW: some XSLT benchmarks  

  02/20/2002 02:01 

  PM   

  Please respond to

  cocoon-dev   

   

   





[EMAIL PROTECTED] wrote:
>
> Yes, I agree with Berin on this, though I also agree with Jacek that
> there's little reason that it should not scale well.
>
> Another factor is "incremental" output, which Xalan interpretive does a
lot
> of work to do well (and tends to take penalty for), and XSLTC may have a
> much harder time at.  On the other hand, especially given cacheing,
> incrementality may not matter at all.  On the other hand, given Cocoon
> pipelines, it may matter a lot.
>
> (Hopefully, XSLTC can eventually be given incremental capabilities...
> though certainly not at the expense of any performance).
>
> I would like to eventually see much more sophisticated benchmarks than
> XSLTMark, which I think only tells about 20% of the performance story.

Well, this is the same old tune as for all benchmarks. Give me a more
sofisticated one and I'll be happy to run the tests again.

But one thing is for sure, XSLTC is way faster than Xalan and, given
choice, I would use the first for performance-critical applications.

No offense, of course, just the plain facts.

--
Stefano Mazzocchi  One must still have chaos in oneself to be
  able to give birth to a dancing star.
<[EMAIL PROTECTED]> Friedrich Nietzsche




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]







-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




Fwd: Re: AW: some XSLT benchmarks

2002-02-20 Thread Jacek Ambroziak


Note: forwarded message attached.

__
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com
--- Begin Message ---

No assumptions about JVMs have been made;
in fact translets used to run faster on IBM's VMs
(esp. 1.1.8) which was a bit embarassing for me
as a Sun-er at the time.

I am sure translets can be further optimized
but JVM tuning would be the last (if at all) place
to look at, maybe except for small devices.

--Jacek


--- Stefano Mazzocchi <[EMAIL PROTECTED]> wrote:
> Jacek Ambroziak wrote:
> > 
> > Stefano,
> > 
> > that is cool!  Except for the mysterious
> 'dbonerow'. I
> > will attempt to fix it
> > an in general I am going continue to follow my
> > original vision
> > to make XSLTC a good technology for people to
> actually
> > use.
> 
> Cool.
> 
> > You are right, there are multiple 'goto's' in the
> > generated bytecodes
> > (although the bytecodes are not hand-optimized,
> right?
> > :-)
> > but automatically generated)
> 
> yes, automatically generated, but the 'XSLT to
> bytecode' patterns have
> been manually crafted, right? and I'm pretty sure
> that you guys crafted
> them based on the assumption on how the underlying
> JVM was going to
> interpret them. Which shows why it is faster on the
> Sun 1.3.1 JVM (but
> this is just my hypotesis)
> 
> My point was: it would be cool to implement a way
> for the 'XSLT 2
> bytecode' patterns to be choosen based on the JVM
> system that is
> currently running (or using a configurations, for
> those translets that
> have to be deployed on platforms different from
> where the translet
> assembly takes place)
> 
> >, so that translets do not
> > correspond
> > to any valid Java program.  Decompiling to FORTRAN
> > would be a different
> > thing :-)  This is one of the reasons why I chose
> to
> > generate bytecodes
> > directly instead of Java code (which would make
> > compilation longer, too).
> 
> Yes, this is a very intriguing technology and I
> think it would be a
> valuable tool for speed-optimizing java code for
> specific cases.
>  
> > As to you other suggestions... I think a lot of
> time
> > is spent *around*
> > transformation, ie. first building the (special)
> DOM,
> > and then
> > serializing (or otherwise using) transformation
> > output.
> > In other words, even if transformation would take
> > exactly 0 ms,
> > we'd see a lot of time going to broadly conceived
> of
> > input/output.
> > That's why translets shine when the same DOM
> objects
> > can be reused,
> > perhaps to generate different 'views' of a
> document,
> > eg. personalize)
> > -- at least building-the-DOM part is factored out.
> 
> Good point.
>  
> > Next I'd like to address 'dbonerow'; the benchmark
> > kills XSLTC  :-(
> > so that it ends the race last w/ 10 iterations of
> the
> > test.
> 
> Please look also into the 'numbers' test that throws
> an exception
> also you might want to run the test to see why there
> are some invalid
> results out of the transformation (compliancy is
> less than Xalan's)
> 
> -- 
> Stefano Mazzocchi  One must still have chaos in
> oneself to be
>   able to give birth to a
> dancing star.
> <[EMAIL PROTECTED]>
> Friedrich Nietzsche
>

> 
> 

__
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com

--- End Message ---

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]