Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 659857
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T23:05:31+00:00 2026-05-13T23:05:31+00:00

considering this example: public static void main(final String[] args) { final List<String> myList =

  • 0

considering this example:

public static void main(final String[] args) {
    final List<String> myList = Arrays.asList("A", "B", "C", "D");
    final long start = System.currentTimeMillis();
    for (int i = 1000000; i > myList.size(); i--) {
        System.out.println("Hello");
    }
    final long stop = System.currentTimeMillis();
    System.out.println("Finish: " + (stop - start));
}

vs

public static void main(final String[] args) {
    final List<String> myList = Arrays.asList("A", "B", "C", "D");
    final long start = System.currentTimeMillis();
    final int size = myList.size();
    for (int i = 1000000; i > size; i--) {
        System.out.println("Hello");
    }
    final long stop = System.currentTimeMillis();
    System.out.println("Finish: " + (stop - start));
}

Will this make any diffrence ? On my machine the second one seems to perform faster but i don’t know if it is really accurate. Will the compiler optimze this code ? I could think that he would if the loop condition is an immutable object (e.g. String array).

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T23:05:31+00:00Added an answer on May 13, 2026 at 11:05 pm

    If you want to test something like this, you really must optimize your microbenchmark to measure what you care about.

    First, make the loop inexpensive but impossible to skip. Computing a sum usually does the trick.

    Second, compare the two timings.

    Here’s some code that does both:

    import java.util.*;
    
    public class Test {
    
    public static long run1() {
      final List<String> myList = Arrays.asList("A", "B", "C", "D");
      final long start = System.nanoTime();
      int sum = 0;
      for (int i = 1000000000; i > myList.size(); i--) sum += i;
      final long stop = System.nanoTime();
      System.out.println("Finish: " + (stop - start)*1e-9 + " ns/op; sum = " + sum);
      return stop-start;
    }
    
    public static long run2() {
      final List<String> myList = Arrays.asList("A", "B", "C", "D");
      final long start = System.nanoTime();
      int sum = 0;
      int limit = myList.size();
      for (int i = 1000000000; i > limit; i--) sum += i;
      final long stop = System.nanoTime();
      System.out.println("Finish: " + (stop - start)*1e-9 + " ns/op; sum = " + sum);
      return stop-start;
    }
    
    public static void main(String[] args) {
      for (int i=0 ; i<5 ; i++) {
        long t1 = run1();
        long t2 = run2();
        System.out.println("  Speedup = " + (t1-t2)*1e-9 + " ns/op\n");
      }
    }
    
    }
    

    And if we run it, on my system we get:

    Finish: 0.481741256 ns/op; sum = -243309322
    Finish: 0.40228402 ns/op; sum = -243309322
      Speedup = 0.079457236 ns/op
    
    Finish: 0.450627151 ns/op; sum = -243309322
    Finish: 0.43534661700000005 ns/op; sum = -243309322
      Speedup = 0.015280534 ns/op
    
    Finish: 0.47738474700000005 ns/op; sum = -243309322
    Finish: 0.403698331 ns/op; sum = -243309322
      Speedup = 0.073686416 ns/op
    
    Finish: 0.47729349600000004 ns/op; sum = -243309322
    Finish: 0.405540508 ns/op; sum = -243309322
      Speedup = 0.071752988 ns/op
    
    Finish: 0.478979617 ns/op; sum = -243309322
    Finish: 0.36067492700000003 ns/op; sum = -243309322
      Speedup = 0.11830469 ns/op
    

    which means that the overhead of the method call is approximately 0.1 ns. If your loop does things that take no more than 1-2 ns, then you should care about this. Otherwise, don’t.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 381k
  • Answers 381k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer The best one out there is JQuery Validate to be… May 14, 2026 at 10:03 pm
  • Editorial Team
    Editorial Team added an answer You can find an answer in the latest version of… May 14, 2026 at 10:03 pm
  • Editorial Team
    Editorial Team added an answer I fixed this by removing all the DLL's in the… May 14, 2026 at 10:03 pm

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.