pig-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dmitriy V. Ryaboy (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PIG-2569) Fix org.apache.pig.test.TestInvoker.testSpeed
Date Mon, 05 Mar 2012 22:30:03 GMT

    [ https://issues.apache.org/jira/browse/PIG-2569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13222684#comment-13222684

Dmitriy V. Ryaboy commented on PIG-2569:

When I wrote that test, the ratio was more like two, and the idea behind hardcoding 5 was
that if it's that slow, it's not worth using and we should rethink. 

I am curious why it just started failing for people -- the code's been around for a year,
and I got reports of the test failing here and in Elephant Bird a week apart. Is there a new
Java build that drastically slowed down reflection or something?

What is your java environment?
> Fix org.apache.pig.test.TestInvoker.testSpeed
> ---------------------------------------------
>                 Key: PIG-2569
>                 URL: https://issues.apache.org/jira/browse/PIG-2569
>             Project: Pig
>          Issue Type: Bug
>            Reporter: Johnny Zhang
> the Pig unit test org.apache.pig.test.TestInvoker.testSpeed pass sometimes and fail sometimes.
I think this test need further polish, look at the code:
> {noformat}
> @Test
>     public void testSpeed() throws IOException, SecurityException, ClassNotFoundException,
NoSuchMethodException {
>         EvalFunc<Double> log = new Log();
>         Tuple tup = tf_.newTuple(1);
>         long start = System.currentTimeMillis();
>         for (int i=0; i < 1000000; i++) {
>             tup.set(0, (double) i);
>             log.exec(tup);
>         }
>         long staticSpeed = (System.currentTimeMillis()-start);
>         start = System.currentTimeMillis();
>         log = new InvokeForDouble("java.lang.Math.log", "Double", "static");
>         for (int i=0; i < 1000000; i++) {
>             tup.set(0, (double) i);
>             log.exec(tup);
>         }
>         long dynamicSpeed = System.currentTimeMillis()-start;
>         System.err.println("Dynamic to static ratio: "+((float) dynamicSpeed)/staticSpeed);
>         assertTrue( ((float) dynamicSpeed)/staticSpeed < 5);
>     }
> {noformat}
> I understand this test is trying to prevent the initicialization time of InvokeForDouble
doesn't take too long, but the ratio 5 is hardcoded, and there is no solid logic behind it
why it is 5. For my understand, when the server resouce is low, ratio could be larger than
5, but it doesn't mean code has problem. For our case, the code never change, but it pass
in the first run, but fail in the second run.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message