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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> wrote:
> > > > Thanks Mark,
> > > >
> > > > All dacapo benches passed after your commit.
> > > >
> > > > Thanks.
> > > > Vladimir.
> > > >
> > > > On 11/12/07, Tony Wu <[EMAIL PROTECTED]> wrote:
> > > > > I noticed Mark has committed your patch, Thank you and Mark :)
> > > > >
> > > > > On 11/10/07, Vladimir Strigun <[EMAIL PROTECTED]> wrote:
> > > > > > On 11/9/07, Tony Wu <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> wrote:
> > > > > > > > > > On 11/6/07, Tim Ellison <[EMAIL PROTECTED]> 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

Reply via email to