Приступая к новой задаче программирования, мы часто думаем:

Какой язык программирования нам выбрать?

Но это также вызывает вопрос

Что мы строим?

Если вы собираетесь создать задачу с интенсивными вычислениями, Java может быть лучшим выбором, чем Python. Почему? Так как -

Код Java сначала компилируется в байт-код, а затем интерпретируется JVM. Таким образом, вся оптимизация выполняется уже во время компиляции. В то время как интерпретатор Python генерирует байт-код на лету.

Итак, если мы выполняем какую-то вычислительную задачу, требующую незначительного ввода-вывода, мы видим, что Java работает намного лучше, чем Python.

Вот доказательство на простом примере. Мы напишем функцию, проверяющую, является ли число простым или нет, как в Java, так и в Python, и посмотрим, как они работают.

Этот эксперимент написан на python 2.7 по умолчанию и java 1.8.

Мы проверяем, является ли число простым или нет, и мы делаем это 10 раз, чтобы получить среднее значение.

Код Python

import time
from math import sqrt
def is_prime(num):
    k = 0
    sq = sqrt(num)
    for i in range(2, int(sq)):
        if num % i == 0:
            k = k+1
    if k <= 0:
        print("Number is prime")
    else:
        print("Number isn't prime")

if __name__ == '__main__':
    num = 67280421310721
    for i in range(0, 10):
        t1 = int(round(time.time() * 1000))
        is_prime(num)
        t2 = int(round(time.time() * 1000))
        print "Total time taken", t2 -t1, "ms"

Вывод:

Число простое
Всего затрачено 594 мс
Число простое
Всего затрачено 554 мс
Число простое
Всего затрачено 541 мс
Число равно Prime
Всего затрачено времени 543 мс
Число простое
Всего затрачено времени 539 мс
Число простое
Всего затрачено времени 541 мс
Число простое< br /> Общее время 542 мс
Простое число
Общее время 545 мс
Простое число
Общее время 547 мс
Простое число
> Общее время 551 мс

Вы можете видеть, что приведенная выше программа занимает в среднем примерно 540 мс (на ваших персональных машинах может быть по-другому).

Код Java

public static void isPrime(long num) {
    long sq = (long) Math.sqrt(num);
    long k = 0;
    for (int i=2; i< sq; i++) {
        if (num % i == 0) {
            k++;
        }
    }
    if (k <= 0 ) {
        System.out.println("Number is prime");
    } else {
        System.out.println("Number isn't prime");
    }
}
public static void main(String args[]) {
   long num = 67280421310721L;
   for (int i=0;i<10;i++) {
       long t1 = System.currentTimeMillis();
       isPrime(num);
       long t2 = System.currentTimeMillis();
       System.out.println("Total time taken "+ (t2 - t1) + " ms");
   }
}

Вывод:

Число простое
Всего затрачено 131 мс
Число простое
Всего затрачено 140 мс
Число простое
Всего затрачено 143 мс
Число равно Prime
Всего затрачено времени 136 мс
Число простое
Всего затрачено времени 136 мс
Число простое
Всего затрачено времени 105 мс
Число простое< br /> Общее время 95 мс
Простое число
Общее время 106 мс
Простое число
Общее время 113 мс
Простое число
> Общее время 89 мс

Здесь вы можете видеть, что грубое среднее значение составляет 100 мс, что в 5 раз лучше, чем среднее значение программы Python.

Примечание. Время, затраченное на ваши машины, может отличаться, но вы наверняка обнаружите радикальные изменения в выполнении вышеуказанных программ на Java и Python.