harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tony Wu" <wuyue...@gmail.com>
Subject Re: [classlib]remove the duplicate locale data
Date Wed, 26 Dec 2007 10:20:56 GMT
Hi, Aleksey

Thanks for performance checking for me. I found the performance
degradation you mentioned is the one addressed in HARMONY-5122. I
provided a new patch including the fix for it on 5061. In this patch I
worked around this issue since ICU refused to fix. BTW, I'd like to
mention that the original implementation of Harmony is simple but
incorrect. Please refer to the explanation on ICU bug trac[1].

Also I have verified it on SpecJBB2005. The performance[2] of my patch
+ M4 is as good as M4 now.

My machine env is

Intel  Xeon(TM) CPU 2.80GHz X 2
Mem 4G
RHEL 5

[1]
http://bugs.icu-project.org/trac/ticket/6027

[2]

Warehouses     M4                      M4 with my patch
1                     5131                     5369
2                     9192                     8890
3                     11740                   11266
4                     12747                   12425
5                     12751                   12640
6                     12436                   12622
7                     12550                   12398
8                     12399                   12325

On 12/22/07, Aleksey Shipilev <aleksey.shipilev@gmail.com> wrote:
> As I've concerned, SPECjbb2005 degradation is not gone: it is still 7%.
> I think we shouldn't commit this patch in main trunk.
>
> Thanks,
> Aleksey.
>
> On Dec 21, 2007 5:50 PM, Aleksey Shipilev <aleksey.shipilev@gmail.com> wrote:
> > Tony,
> >
> > I think it's better to check new patch performance before committing.
> > I'm going to check it in next several hours.
> >
> > Thanks,
> > Aleksey,
> > ESSD, Intel.
> >
> >
> > On Dec 21, 2007 12:01 PM, Tony Wu <wuyuehao@gmail.com> wrote:
> > > Hi all,
> > > I'd like to recommit the patch if no one objects.
> > >
> > > My new patch on 5061 fixes
> > > 1. the performance issue addressed in 5129
> > > 2. the return type gap on 5085
> > > 3. the testcases in text module, now they can pass on both RI and Harmony
> > >
> > > Still this patch willl exclude following tests in luni
> > > +tests/api/java/util/CurrencyTest.java
> > > +tests/api/java/util/FormatterTest.java
> > > +tests/api/java/util/GregorianCalendarTest.java
> > > +tests/api/java/util/LocaleTest.java
> > > +tests/api/java/util/ScannerTest.java
> > >
> > > In total there are 1 error and 13 failures, all of which are caused by
> > > differences between RI and ICU. I'll record them as non-bug difference
> > > later.
> > >
> > >
> > > On 11/12/07, Vladimir Strigun <vstrigun@gmail.com> wrote:
> > > > Thanks Mark,
> > > >
> > > > All dacapo benches passed after your commit.
> > > >
> > > > Thanks.
> > > > Vladimir.
> > > >
> > > > On 11/12/07, Tony Wu <wuyuehao@gmail.com> wrote:
> > > > > I noticed Mark has committed your patch, Thank you and Mark :)
> > > > >
> > > > > On 11/10/07, Vladimir Strigun <vstrigun@gmail.com> wrote:
> > > > > > On 11/9/07, Tony Wu <wuyuehao@gmail.com> wrote:
> > > > > > > Hi Vladimir
> > > > > > > really busy this weekend. I've recorded it as JIRA 5100,
high
> > > > > > > appreciate if you could provide a simple testcase.
> > > > > >
> > > > > > Hi Tony,
> > > > > >
> > > > > > It seems we've faced with first isues in new ICU version. ICU
returns
> > > > > > null instead of correct string for time zone. Could you please
check
> > > > > > the patch attached to JIRA and apply it to fix the regression?
> > > > > >
> > > > > > Thanks.
> > > > > > Vladimir.
> > > > > >
> > > > > > > On 11/7/07, Vladimir Strigun <vstrigun@gmail.com>
wrote:
> > > > > > > > Hi Tony,
> > > > > > > >
> > > > > > > > It seems your commit r592434 introduce regression
for Dacapo.jython
> > > > > > > > (the bench passed on r592433). Here is the execution
log:
> > > > > > > > ===== DaCapo jython starting =====
> > > > > > > > -------------------------------------------------------------------------------
> > > > > > > > PYBENCH 2.0
> > > > > > > > -------------------------------------------------------------------------------
> > > > > > > > * using Python 2.2a1
> > > > > > > > * Python version doesn't support garbage collection
> > > > > > > > * system check interval set to maximum: 2147483647
> > > > > > > > * using timer: time.time
> > > > > > > >
> > > > > > > > Traceback (innermost last):
> > > > > > > >  File ".\scratch\jython\pybench\pybench.py", line
946, in ?
> > > > > > > >  File "Z:\UBS\Storage\.\scratch\jython\pybench\CommandLine.py",
line
> > > > > > > > 346, in __init__
> > > > > > > >  File ".\scratch\jython\pybench\pybench.py", line
903, in main
> > > > > > > >  File ".\scratch\jython\pybench\pybench.py", line
425, in __init__
> > > > > > > > java.lang.IllegalArgumentException: Cannot create
PyString from null!
> > > > > > > >        at org.python.core.PyString.<init>(Unknown
Source)
> > > > > > > >        at org.python.modules.time.classDictInit(Unknown
Source)
> > > > > > > >        at java.lang.reflect.VMReflection.invokeMethod(VMReflection.java)
> > > > > > > >        at java.lang.reflect.Method.invoke(Method.java:317)
> > > > > > > >        at org.python.core.PyJavaClass.initialize(Unknown
Source)
> > > > > > > >        at org.python.core.PyJavaClass.lookupGivingClass(Unknown
Source)
> > > > > > > >        at org.python.core.PyClass.lookup(Unknown Source)
> > > > > > > >        at org.python.core.PyJavaClass.__findattr__(Unknown
Source)
> > > > > > > >        at org.python.core.PyObject.__getattr__(Unknown
Source)
> > > > > > > >        at org.python.pycode._pyx1.__init__$14(.\scratch\jython\pybench\pybench.py:425)
> > > > > > > >        at org.python.pycode._pyx1.call_function(.\scratch\jython\pybench\pybench.py)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyFunction.__call__(Unknown
Source)
> > > > > > > >        at org.python.core.PyInstance.__init__(Unknown
Source)
> > > > > > > >        at org.python.core.PyClass.__call__(Unknown
Source)
> > > > > > > >        at org.python.pycode._pyx1.main$25(.\scratch\jython\pybench\pybench.py:903)
> > > > > > > >        at org.python.pycode._pyx1.call_function(.\scratch\jython\pybench\pybench.py)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyFunction.__call__(Unknown
Source)
> > > > > > > >        at org.python.core.PyMethod.__call__(Unknown
Source)
> > > > > > > >        at org.python.core.PyObject.__call__(Unknown
Source)
> > > > > > > >        at CommandLine$py.__init__$15(Z:\UBS\Storage\.\scratch\jython\pybench\CommandLine.py:346)
> > > > > > > >        at CommandLine$py.call_function(Z:\UBS\Storage\.\scratch\jython\pybench\CommandLine.py)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyFunction.__call__(Unknown
Source)
> > > > > > > >        at org.python.core.PyInstance.__init__(Unknown
Source)
> > > > > > > >        at org.python.core.PyClass.__call__(Unknown
Source)
> > > > > > > >        at org.python.core.PyObject.__call__(Unknown
Source)
> > > > > > > >        at org.python.pycode._pyx1.f$0(.\scratch\jython\pybench\pybench.py:946)
> > > > > > > >        at org.python.pycode._pyx1.call_function(.\scratch\jython\pybench\pybench.py)
> > > > > > > >        at org.python.core.PyTableCode.call(Unknown
Source)
> > > > > > > >        at org.python.core.PyCode.call(Unknown Source)
> > > > > > > >        at org.python.core.Py.runCode(Unknown Source)
> > > > > > > >        at org.python.core.__builtin__.execfile_flags(Unknown
Source)
> > > > > > > >        at org.python.util.PythonInterpreter.execfile(Unknown
Source)
> > > > > > > >        at org.python.util.jython.main(Unknown Source)
> > > > > > > >        at dacapo.jython.JythonHarness.iterate(JythonHarness.java:38)
> > > > > > > >        at dacapo.Benchmark.run(Benchmark.java:126)
> > > > > > > >        at dacapo.TestHarness.runBenchmark(TestHarness.java:302)
> > > > > > > >        at dacapo.TestHarness.main(TestHarness.java:242)
> > > > > > > >        at Harness.main(Harness.java:5)
> > > > > > > >        at java.lang.reflect.VMReflection.invokeMethod(VMReflection.java)
> > > > > > > >        at java.lang.reflect.Method.invoke(Method.java:317)
> > > > > > > >        at org.apache.harmony.vm.JarRunner.main(JarRunner.java:80)
> > > > > > > >
> > > > > > > >
> > > > > > > > java.lang.IllegalArgumentException:
> > > > > > > > java.lang.IllegalArgumentException: Cannot create
PyString from null!
> > > > > > > >
> > > > > > > >
> > > > > > > > Thanks.
> > > > > > > > Vladimir.
> > > > > > > >
> > > > > > > > On 11/6/07, Tony Wu <wuyuehao@gmail.com> wrote:
> > > > > > > > > I've committed the patch at r592434.
> > > > > > > > > the excluded classes are,
> > > > > > > > >
> > > > > > > > > tests.api.java.util.CurrencyTest
> > > > > > > > > tests.api.java.util.FormatterTest
> > > > > > > > > tests.api.java.util.GregorianCalendarTest
> > > > > > > > > tests.api.java.util.LocaleTest
> > > > > > > > > tests.api.java.util.ScannerTest
> > > > > > > > >
> > > > > > > > > org.apache.harmony.text.tests.java.text.DecimalFormatSymbolsTest
> > > > > > > > > org.apache.harmony.text.tests.java.text.NumberFormatTest
> > > > > > > > > org.apache.harmony.text.tests.java.text.SimpleDateFormatTest
> > > > > > > > >
> > > > > > > > > pls kindly let me know if you find any problem,
thanks.
> > > > > > > > >
> > > > > > > > > On 11/6/07, Tony Wu <wuyuehao@gmail.com>
wrote:
> > > > > > > > > > On 11/6/07, Tim Ellison <t.p.ellison@gmail.com>
wrote:
> > > > > > > > > > > Tony Wu wrote:
> > > > > > > > > > > > I've raised a JIRA[1] for migrating
the dependencies of locale related
> > > > > > > > > > > > data to icu4j and remove the data
in
> > > > > > > > > > > > luni/src/main/java/org/apache/harmony/luni/internal/locale/.
Currently
> > > > > > > > > > > > I have delegated all the locale
related classes to corresponding
> > > > > > > > > > > > classes in icu4j and successfully
removed the dependencies of harmony
> > > > > > > > > > > > resource bundles.
> > > > > > > > > > >
> > > > > > > > > > > Cool -- this is good because it removes
the code duplication we have at
> > > > > > > > > > > present, it shifts the maintenance
of the locale data into the right
> > > > > > > > > > > place (IMHO) that being the ICU project,
and gives us the opportunity to
> > > > > > > > > > > use the ICU tools to customize/refresh/etc
the data for Harmony each
> > > > > > > > > > > time the USA decide to introduce another
daylight savings change ;-)
> > > > > > > > > >
> > > > > > > > > > exactly.
> > > > > > > > > > >
> > > > > > > > > > > > As expected, there are around
20 failures of harmony test. Many of
> > > > > > > > > > > > them are caused by data difference.
I've listed all of them on harmony
> > > > > > > > > > > > wiki[2] and will raise them to
icu soon.
> > > > > > > > > > >
> > > > > > > > > > > Ack.  I believe that (pretty much)
everyone gets the data from the CLDR,
> > > > > > > > > > > so I would expect any differences to
be tests that have out of date
> > > > > > > > > > > assumptions about the data.
> > > > > > > > > >
> > > > > > > > > > Yes, I'll check it based on CLDR.
> > > > > > > > > > >
> > > > > > > > > > > > By applying this patch, we can
get 4.2 mega bytes decrease in harmony
> > > > > > > > > > > > source code, including the svn
data.
> > > > > > > > > > >
> > > > > > > > > > > ooh, say that again!  Removing 4.2Mb
of redundant source code is excellent.
> > > > > > > > > > >
> > > > > > > > > > > > My proposal is to apply the patch
on 5061 first and exclude these
> > > > > > > > > > > > tests which fail on different
locale data. Then I'll take follow up
> > > > > > > > > > > > action to contact icu team and
get solution to move them out.
> > > > > > > > > > > > Otherwise I'm afraid my fix will
be outdated for waiting until icu
> > > > > > > > > > > > team get ready to fix the data.
Do you have any objection?
> > > > > > > > > > > >
> > > > > > > > > > > > Later, I'll take care of the performance
issue of this delegation.
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks in advance for your comments
> > > > > > > > > > >
> > > > > > > > > > > Sounds like a good plan.
> > > > > > > > > > >
> > > > > > > > > > > Regards,
> > > > > > > > > > > Tim
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > Tony Wu
> > > > > > > > > > China Software Development Lab, IBM
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Tony Wu
> > > > > > > > > China Software Development Lab, IBM
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Tony Wu
> > > > > > > China Software Development Lab, IBM
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Tony Wu
> > > > > China Software Development Lab, IBM
> > > > >
> > > >
> > >
> > >
> > > --
> > >
> > > Tony Wu
> > > China Software Development Lab, IBM
> > >
> >
>


-- 
Tony Wu
China Software Development Lab, IBM

Mime
View raw message