[ https://issues.apache.org/jira/browse/HIVE-5018?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13756731#comment-13756731 ]
Benjamin Jakobus commented on HIVE-5018: ---------------------------------------- Here is some sample code: {quote} /** * Examine the performance difference between declaring variables inside loops * and declaring them outside of loops. */ public class InLoopInstantiationTest { public InLoopInstantiationTest() { long start = System.currentTimeMillis(); SessionIdentifierGenerator gen = new SessionIdentifierGenerator(); for (int i = 0; i < 10000; i++) { FooBar f = new FooBar(); Integer i1 = new Integer(i); String s = gen.nextSessionId(); } long end = System.currentTimeMillis(); System.out.println("in loop instantiation took " + (end - start) + " milliseconds"); start = System.currentTimeMillis(); FooBar f; Integer i1; String s; for (int i = 0; i < 10000; i++) { f = new FooBar(); i1 = new Integer(i); s = gen.nextSessionId(); } end = System.currentTimeMillis(); System.out.println("avoiding in loop instantiation took " + (end - start) + " milliseconds"); } public static void main(String[] args) { new InLoopInstantiationTest(); } private class FooBar { private String foo = "asdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasd" + "asdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasd" + "asdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasd"; } public final class SessionIdentifierGenerator { private SecureRandom random = new SecureRandom(); public String nextSessionId() { return new BigInteger(130, random).toString(32); } } } {quote} The arithmetic script that I used to test this code in Hive is: {quote} SELECT (dataset.age * dataset.gpa + 3) AS F1, (dataset.age/dataset.gpa - 1.5) AS F2 FROM dataset WHERE dataset.gpa > 0; {quote} > Avoiding object instantiation in loops (issue 6) > ------------------------------------------------ > > Key: HIVE-5018 > URL: https://issues.apache.org/jira/browse/HIVE-5018 > Project: Hive > Issue Type: Sub-task > Reporter: Benjamin Jakobus > Assignee: Benjamin Jakobus > Priority: Minor > Fix For: 0.12.0 > > Attachments: HIVE-5018.1.patch.txt > > > Object instantiation inside loops is very expensive. Where possible, object > references should be created outside the loop so that they can be reused. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira