Skip to main content

Do you know how to accelerate the phoneME cldc vm's performance?

6 replies [Last post]
Anonymous

Currently, i would like to compare the Sun cldc1.1 RI vm and phoneME cldc1.1 vm's performance on win32 platform.

Result is so strange, phoneME take two times while sun RI take one to finished the "10000 * 65535" loop.

Do you know some build option which infulence the phoneME's performance on win32?

I use the jdk 1.4.2 and phoneme_feature-mr2-dev-src-b04-21_dec_2006, VS.NET 2003 build successful.

Thanks and Best Regards
LiCheng Zhao
赵立成
------------------------------------------------
Motorola Software Group
Phone: 86-28-87826088-2508
Postal Code: 611731
Address: NO.7 Xixin Avenue,
West District of Hi-Tech Zone,
ChengDu, SiChuan, P.R.C.

===========================================================================
To unsubscribe, send email to listserv@java.sun.com and include in the body
of the message "signoff KVM-INTEREST". For general help, send email to
listserv@java.sun.com and include in the body of the message "help".
[att1.html]

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Zhao LiCheng-A2315Z

Ok, I would like to choose the phoneME to do the porting.

Thanks so much for your valuable information and kind help.

Thanks & Best regards
LiCheng Zhao

ext. 2508

-----Original Message-----
From: A mailing list for KVM discussion
[mailto:KVM-INTEREST@JAVA.SUN.COM] On Behalf Of
meinterest@mobileandembedded.org
Sent: Tuesday, February 13, 2007 12:45 AM
To: KVM-INTEREST@JAVA.SUN.COM
Subject: Re: Do you know how to accelerate the phoneME cldc vm's
performance?

Hi again,

Can you characterize the type of work you will be doing on the radio?
This understanding is important to find an appropriate benchmark that
reflects that workload.

But on a more general note I'm not sure it's really necessary to
benchmark the RI against phoneME Feature. phoneME Feature will be
significantly faster on literally every meaningful benchmark you throw
at it. We are using the RI as a baseline for comparisons and so we
benchmark against the RI on a regular basis.

Also, the RI is a non-optimized code base that is no longer maintained
except for critical bug fixes. So from that perspective also phoneME is
a much better choice.

-- Terrence
[Message sent by forum member 'terrencebarr' (terrencebarr)]

http://forums.java.net/jive/thread.jspa?messageID=203435

========================================================================
===
To unsubscribe, send email to listserv@java.sun.com and include in the
body of the message "signoff KVM-INTEREST". For general help, send
email to listserv@java.sun.com and include in the body of the message
"help".

===========================================================================
To unsubscribe, send email to listserv@java.sun.com and include in the body
of the message "signoff KVM-INTEREST". For general help, send email to
listserv@java.sun.com and include in the body of the message "help".

terrencebarr
Offline
Joined: 2004-03-04
Points: 0

Hi again,

Can you characterize the type of work you will be doing on the radio? This understanding is important to find an appropriate benchmark that reflects that workload.

But on a more general note I'm not sure it's really necessary to benchmark the RI against phoneME Feature. phoneME Feature will be significantly faster on literally every meaningful benchmark you throw at it. We are using the RI as a baseline for comparisons and so we benchmark against the RI on a regular basis.

Also, the RI is a non-optimized code base that is no longer maintained except for critical bug fixes. So from that perspective also phoneME is a much better choice.

-- Terrence

Zhao LiCheng-A2315Z

I would like to porting the phoneME cldc vm into the ARM based radio.
Before porting, I need to know the the performance of these two kvm
(phoneME's and sun reference impl's), and choose one. Then a benchmark
is needed.

The sun RI's only provide the "win32", "Unix", "winCE" three platform,
so we need to choose one to test. If the win32 may produce meaningless
results, I bet the linux platform will have the same problems.
Though the phoneME is desiged and optimized for the embeded system, we
can't find one to run the test. If we can, it means we already finished
the porting.

So we need find another way, as you said in your former mail, run
complicated app for long enough, the let the phoneME's optimization take
effect.

Or, do you have some app which is suitable for the benchmark?

Thanks & Best regards
LiCheng Zhao

ext. 2508

-----Original Message-----
From: A mailing list for KVM discussion
[mailto:KVM-INTEREST@JAVA.SUN.COM] On Behalf Of
meinterest@mobileandembedded.org
Sent: Saturday, February 10, 2007 7:34 AM
To: KVM-INTEREST@JAVA.SUN.COM
Subject: Re: Do you know how to accelerate the phoneME cldc vm's
performance?

Let me make a correction to my first statement. Running on phoneME
Feature on Windows may produce meaningless results, depending on the
benchmark situation. The point is that phoneME Feature works best in
the environment it was designed for and running it on Windows may not
give you results that are indicative of its performance on devices.

-- Terrence
[Message sent by forum member 'terrencebarr' (terrencebarr)]

http://forums.java.net/jive/thread.jspa?messageID=202996

========================================================================
===
To unsubscribe, send email to listserv@java.sun.com and include in the
body of the message "signoff KVM-INTEREST". For general help, send
email to listserv@java.sun.com and include in the body of the message
"help".

===========================================================================
To unsubscribe, send email to listserv@java.sun.com and include in the body
of the message "signoff KVM-INTEREST". For general help, send email to
listserv@java.sun.com and include in the body of the message "help".

terrencebarr
Offline
Joined: 2004-03-04
Points: 0

Let me make a correction to my first statement. Running on phoneME Feature on Windows may produce meaningless results, depending on the benchmark situation. The point is that phoneME Feature works best in the environment it was designed for and running it on Windows may not give you results that are indicative of its performance on devices.

-- Terrence

olegpliss
Offline
Joined: 2006-11-09
Points: 0

CLDC VM supports 3 execution modes: interpreted, compiled and mixed (default). In mixed mode dynamic profiler decides which bytecodes and when to compile. Execution of an empty loop can be a performance measure for interpreted and compiled modes but not for the mixed mode.

Suppose in interpreted mode for N iterations of empty loop the VM spends Ti*N cycles.
In compiled mode it spends Tn*N cycles.
In mixed mode it interprets first M iterations, detects a hot spot, compiled the method in Tc cycles, continues execution of the compiled loop. So the total is Ti*M + Tn*(N-M) + Tc cycles.

terrencebarr
Offline
Joined: 2004-03-04
Points: 0

Hi Zhao,

Generally speaking phoneME Feature MR1 performs about 5 to 20 times [i]faster[/i] on real-world Java ME applications running on embedded platforms compared to Sun's CLDC RI. phoneMR Feature MR2 should even be slightly faster than that since it has additional optimizations over MR1.

However, there are two problems with the way you are doing your comparison:

- Win32 is not a realistic platform for phoneME Feature. The reason there is a Win32 port for phoneME is to provide and test [i]functionality[/i] of the phoneME stack, not for performance analysis. phoneME Feature is optimized for its target platforms which are embedded devices with slow processors and limited memory (for example, an ARM-based device with 16 MB of memory running an embedded operating system). Many design choices and optimization strategies of phoneME are centered around these parameters. Running phoneME on a high-powered PC platform produces meaningless performance results.

- A simple loop is not necessarily a [i]realistic[/i] benchmark. Because phoneME is designed for embedded devices the design team had to make trade-offs which optimization strategies to pursue. What matters to the user of a Java ME stack is how well [i]real-world[/i] applications execute and so that is what phoneME focuses on. Execution patterns and data access patterns for such applications are much more complex than simple loops. phoneME performs runtime analysis of the execution and data flow and optimizes for maximum performance over the runtime of the application. A simple counting loop has two problems in this respect: a) it doesn't give phoneME many possibilities for optimization in the first place and b) it probably doesn't run long enough for phoneME's optimizations to really show an effect.

In summary, performance highly depends on your platform and your applications. Can you tell me more about what you are trying to accomplish?

Thanks,

-- Terrence

Terrence Barr
Evangelist, Java Mobile & Embedded Community
Sun Microsystems, Germany
www.mobileandembedded.org