Related Articles

Related Articles

Why Java Language is Slower Than CPP for Competitive Programming?
  • Difficulty Level : Hard
  • Last Updated : 18 Dec, 2020

Choosing the appropriate language while starting competitive programming is the most important factor. Generally, we choose that language that has short syntax and executes very fast or which is familiar to us, and we know all the working patterns of that particular whether it is Java or C++.

Why-Java-Language-is-Slower-Than-CPP-for-Competitive-Programming

Most of the programmers use C++ for competitive programming, and also many old programmers shift to C++. The most rated competitive programmers like Gennady Korotkevich, Errichto, and many other programmers use C++ for competitive programming but why the handle of Java for competitive programming is very less than compared to C++? Let’s understand this 

C++ simple addition program:



Java simple addition program:

We can see that the execution time and Memory of C++ are very smaller than the Java program. This makes a very big problem for the big programs.

There are several reasons why java is slow for competitive programming as compared to C++ that makes programmers avoid it. Some of the common ones are given below…

1. Choosing the Wrong Class for I/O Operations or Using Bad Syntax

Java language is not very slow as compared to C++. There are two classes generally used for I/O operations in the JAVA, Scanner class, and BufferedReader Class. Most of the programmers especially beginners use Scanner class for I/O operations and avoid Buffered Reader class for I/O due to long length syntax.

Internal parsing operations in the scanner class make the execution of the program very slow whereas the Buffered Reader class only reads the input and further parsing are done according to the need of the operations. Using Scanner class create TLE problem for java programs in Competitive programming. 

There are many articles that have been published on how to avoid TLE in Java i.e. “How to get rid of Java TLE problem” and How An Online Judge Works And How To Avoid Time Limit Exceeded Problem? etc. In a nutshell, all articles suggest using Buffered Reader class instead of Scanner class for I/O operations.

Java



filter_none

edit
close

play_arrow

link
brightness_4
code

import java.io.*;
import java.util.*;
  
class GFG {
  
public static void main(String[] args) throws NumberFormatException, IOException {
      
        // Reading the input and performing internal parsing
        Scanner scan = new Scanner(System.in);
             
        int n = scan.nextInt();
        
        // Reading the input as a Stream Using InputStreamReader
        BufferedReader Bd = new BufferedReader(new InputStreamReader(System.in));
          
        // converting the String into int datatype
        int m = Integer.parseInt(Bd.readLine());
    }
}

chevron_right


Read more on this topic from the article How to Create Java Snippets in VSCode for Competitive Programming? and if you want to know that how to decrease the execution speed for java language then go through the article  Fast I/O in Java in Competitive Programming

C++ language is also fast because it is very close to the machine and registers. This is the reason C++ is also used in Embedded circuits rather than Java.

2. Compilation and Execution Process

Programming languages can be differentiated on the basis of the execution and compilation process of its program. Some languages are Interpreted languages means the interpreter checks the syntax of a particular Interpreted language like Python line by line. 

Compiled languages directly convert the programs into machine code. As a result, these languages are much faster than Interpreter Language. An interpreter takes very little time to analyze the source code. However, the overall time to execute the process is much slower. This makes the execution of the Interpreted programming language very slow as compared to compiled languages like C or C++. That’s why Python is slower than C++ and Java.

Java is neither a compiled language nor an interpreted language. It lies in the middle. Java is a platform-independent language which makes it very popular among all the programming languages. The Byte code makes it a platform-Independent language. This is the advantage of Java. 

It makes the execution of programs slower than C++ program because there are no middle operations that occur for execution and compilation like Java in C++. The reason for the slow execution of the program, there is a huge overhead to starting the Java code if the virtual machine is not running.

Compilation and Execution process of JAVA program:

3. Memory Consumption

The memory consumption of the Java programs is more than the C++ program. (Refer to the above programs of Java and C++). 

We all know that Java itself manages the memory and needs no explicit intervention of the programmer. The garbage collector itself ensures that the unused space gets cleaned and memory can be freed when not needed. So extra garbage collector takes extra memory to trace all the memory consumption of the java program.

It is beneficial for the java programmer not to take care of memory management. It is automatically done by the JVM and garbage collector but the garbage collector is not present in C++. There is a chance of memory leak but it makes the C++ programs very light. 

Hence, the memory consumption of C++ programs is very less than compared to Java programs. As a result, it helps in the fast execution of the C++ programs.

  “If your weapon is sharp your chance to win the game increases”

We can choose any language for competitive programming but first, we have to clear all its fundamental topics and how a particular language works that will be very beneficial for the beginners.                     

competitive-programming-img

My Personal Notes arrow_drop_up
Recommended Articles
Page :