Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 08.10.2016
Сообщений: 10

Сравнение производительности программ на C++ и Java

20.04.2019, 18:47. Показов 6411. Ответов 75
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть две программы работающие по одному и тому же алгоритму(нахождение простых чисел через решето Эратосфена) на C++ и Java вот код:

C++
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <vector>
#include <cmath>
 
using namespace std;
 
int main() {
    int m, n; bool isAbsent = true;
    cin >> m >> n;
 
    vector<bool> vec(n + 1, true);
 
    for (size_t i = 2 * 2; i <= n; i += 2)
        vec[i] = false;
    for (size_t i = 3; i <= sqrt((double) n); i++)
        for (size_t j = i * i; j <= n; j += i)
            vec[j] = false;
 
    for (size_t i = m; i <= n; i++)
        if (vec[i]) {
            cout << i << endl;
            isAbsent = false;
        }
 
    if (isAbsent)
        cout << "Absent" << endl;
 
    return 0;
}


Java
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.Scanner;
import java.lang.Math;
 
public class main {
 
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
 
        int m, n; boolean isAbsent = true;
        m = in.nextInt();
        n = in.nextInt();
 
        boolean arr[] = new boolean[n+1];
 
        for (int i = 0; i <= n; i++)
            arr[i] = true;
 
        for (int i = 2*2; i <= n; i += 2)
            arr[i] = false;
 
        for (int i = 3; i <= Math.sqrt(n); i++)
            for (int j = i*i; j <= n; j += i)
                arr[j] = false;
 
        for (int i = m; i <= n; i++)
            if (arr[i]) {
                System.out.println(i);
                isAbsent = false;
            }
 
        if (isAbsent)
            System.out.println("Absent");
    }
}


При этом в тестирующей онлайн системе(https://informatics.msk.ru/moo... erid=611#1) эти алгоритмы дают различные результаты по производительности: программа на яве выполняется дольше и использует гораздо больше памяти

вопрос следующий - что не правильно написал в программе на яве?
Миниатюры
Сравнение производительности программ на C++ и Java   Сравнение производительности программ на C++ и Java  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2019, 18:47
Ответы с готовыми решениями:

Сравнение производительности графики
Скажите какой код будет быстрее работать? Визуально трудно определить, а с точки зрения технлогии реализации или специфики работы JVM ...

Сравнение производительности
Приветствую. Начал изучать асм вставки. Решил ради наглядности написать несколько функций и сравнивать производительность... Видимо где-то...

Сравнение производительности
Здравствуйте! Вопрос довольно простой, но мне важно убедиться) vector&lt;Object*&gt; v; unordered_map&lt;unsigned int,...

75
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.04.2019, 13:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Croessmah Посмотреть сообщение
А остров называется Jawa.
Еще мотоцикл называется Ява, собственного его название и пишется Jawa
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
22.04.2019, 13:33
Цитата Сообщение от Kastaneda Посмотреть сообщение
Еще мотоцикл называется Ява, собственного его название и пишется Jawa
Ну и это изначально на индонезийском.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
22.04.2019, 13:42
https://en.wikipedia.org/wiki/Java
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,304
22.04.2019, 13:45
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Технология кучи и основанное на ней управления на основе регионов.
Это не ответ на мой вопрос. Назовите конкретный продукт.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В данном случае на том что данные просто перезаписываются в тот же буфер а не копируется весь массив с изменением одного элемента как это по всей видимости происходит в яве.
В тот-же буфер записываться не может, т.к. содержимое может быть референсировано в других местах.
Вы говорите о: если у меня 3 ссылки на тип String с содержимым "blabla", то и в памяти у меня 3 клона одного и того же. Данная стратегия имеет право быть, но не вижу никаких революционных преимуществ перед стратегией GC.

И вообще, много слов, но мало по делу. Если автоматизировать контроль над памятью, то либо надо уступить в памяти, либо в CPU. Процессы обеспечивающие данный контроль тоже нуждаются в ресурсах. Это информатика, магии тут нет и быть не может. Сегодняшний хард это позволяет делать. Если кому не нравится - пожалуйста, контролируйте вручную в тех-же плюсах. Я не говорю, что это плохо.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
При этом не надо путать понятие управление памятью и управление временем жизни. Это две абсолютно разных задачи.
Не надо раздувать проблем, там где их нет и плодить абстрактные понятия, там где они не нужны. Есть конкретная тема, говорите по сути.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Кастомизация ни одной из них с GC не возможна.
А вы смотрели документацию, что можно настраивать в GC?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
22.04.2019, 13:50
xoraxax, ну вот, там и написан оригинал тоже - Jawa.
И на обоих языках не читается как Ява.
Кстати, можно на русскоязычную версию заглянуть
https://ru.m.wikipedia.org/wiki/Java
В соответствии с этимологией в русскоязычной литературе с конца двадцатого и до первых лет двадцать первого века название языка нередко переводилось как Ява, а не транскрибировалось, как это стало общепринятым[источник не указан 138 дней] позднее.
Но википедия - так себе источник.
Я вообще редко слышу Ява. В основном Джава.
Точно также JDK - ДжиДиКей а не ЯДиКей, JRE - тоже через Дж.
0
Эксперт .NET
 Аватар для Usaga
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,893
22.04.2019, 13:56
Цитата Сообщение от Kukstyler Посмотреть сообщение
А вы смотрели документацию, что можно настраивать в GC?
Под кастомезацией он понимает возможность определить момент, когда объект будет уничтожен. Ему, почему-то, кажется это ну очень важной вещью.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
22.04.2019, 14:05
во-первых, джэйДиКей,
во-вторых - буква j в английском называется джэй, аббревиатуры читаются как названия букв, очевидно
в-третьих, есть имя собственное Java, которое по-русски читается как Ява, с этим больше никто не будет спорить, я надеюсь
в-четвертых, произношение джава это английское произношение, а так уж вышло, что программирование - в основном англоязычно
однако это не отменяет того, что, говоря по-русски, следует использовать произношение, принятое в русском языке (т.е. Ява)
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,304
22.04.2019, 14:19
Цитата Сообщение от Usaga Посмотреть сообщение
Под кастомезацией он понимает возможность определить момент, когда объект будет уничтожен.
В случае стратегии GC, это полностью противоречит базовым принципам его работы. Если он действительно так это понимает, то получается он вообще не понимает что такое GC.

Лично я не собираюсь утверждать, что Java это лучшее, что придумал человек. Но Java - это реально вещь! Не самая лучшая, но конкретная вещь. Есть ли у неё свои недостатки - естественно, как у всего! И она никогда не сгенерит свой исполняемый файл быстрее нативного бинарника (не учитывая JIT compile). Но у всего есть свои плюсы и минусы, а сегодня и свои так сказать ниши. А говорить про то, что GC г.но и что надо делать так и так, это для меня всё равно, что Windows 7 Super-Лёлик Edition.
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.04.2019, 14:30
Цитата Сообщение от Kukstyler Посмотреть сообщение
Есть ли у неё свои недостатки - естественно, как у всего!
У Borland VCL нет недостатков!
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,304
22.04.2019, 14:41
Цитата Сообщение от Kastaneda Посмотреть сообщение
У Borland VCL нет недостатков!
И у озера Титикака тоже.
Я с уважением отношусь к Borland VCL, но если Вы не шутите, и в серьёз хотите дискутировать о том, что у того или иного продукта нет вообще недостатков, то я пас.
0
22.04.2019, 14:52

Не по теме:

Цитата Сообщение от Kukstyler Посмотреть сообщение
но если Вы не шутите
Fulcrum_013, тут сомневаются ...

0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,304
22.04.2019, 14:59

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
Fulcrum_013, тут сомневаются ...
Ну, значит таков его крест...


0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
22.04.2019, 20:18
Цитата Сообщение от Kukstyler Посмотреть сообщение
Но Java - это реально вещь!
Ява - ошибка природы. Реально.

Добавлено через 1 минуту
Цитата Сообщение от Kukstyler Посмотреть сообщение
Если он действительно так это понимает, то получается он вообще не понимает что такое GC.
Я просто прекрасно понимаю что GC бесполезен и вреден для ООП языка. Поэтому и называю яву в которую его по ошибке влепили ошибкой бледнолицых. Эти грабли с негораздами от GC в ООП были пойманы еще на Симуле-67 и при проектировании всех профессиональных языков GC выбросили еще в 70-80-х.

Добавлено через 2 минуты
Цитата Сообщение от Kukstyler Посмотреть сообщение
В случае стратегии GC, это полностью противоречит базовым принципам его работы
НА самом деле стратегия ПС противоречит базовым принципам ООП
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,304
22.04.2019, 20:58
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ява - ошибка природы. Реально.
Нас интересуют факты, а не домыслы. Обоснуйте Ваше мнение, тогда дискуссия будет интересной. А иначе, смысл 0.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Я просто прекрасно понимаю что GC бесполезен и вреден для ООП языка.
Причём тут ООП? GC мог бы использоваться и в том-же Си.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
НА самом деле стратегия ПС противоречит базовым принципам ООП
Обоснуйте Ваше мнение.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
22.04.2019, 21:00
Цитата Сообщение от Kukstyler Посмотреть сообщение
Обоснуйте Ваше мнение
1) Не C++
2) Имеет GC
3) Нет VCL
Всё что попадает хоть в один из перечисленных пунктов - фигня, а те кто пользуется ламеры-быдлокодеры.
1
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,304
22.04.2019, 21:02
Цитата Сообщение от Croessmah Посмотреть сообщение
1) Не C++
2) Имеет GC
3) Нет VCL
Всё ясно! Тут, конечно, не поспоришь!

Ну раз уж на то пошло, капну йаду: С++ ваапсче сдохнет, и это не за горами. А вот Си будет жить, скорее всего всегда.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
22.04.2019, 21:06
Цитата Сообщение от Kukstyler Посмотреть сообщение
Тут, конечно, не поспоришь
А Вы никогда не сталкивались с этим персонажем ранее?
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,304
22.04.2019, 21:30
Цитата Сообщение от Croessmah Посмотреть сообщение
А Вы никогда не сталкивались с этим персонажем ранее?
Не имел чести. С подобными -да, но конкретно с этим, судьба пока не сталкивала. Наверное, всему своё время.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
22.04.2019, 22:06
Цитата Сообщение от Kukstyler Посмотреть сообщение
Обоснуйте Ваше мнение.
В ООП нет понятия нужен/не нужен. Есть понятие может продолжать/существование не может. В ООП есть два типа взаимосвязей. Композиция и агрегация. Разрыв композиции приводит к невозможности существования объекта. Это определение композиции - объект не может существовать без хозяина. Соответственно при убивстве хозяина объект должен быть убит вне зависимости от того сколько других объектов с ним взаимосвязаны. Т.е. в ООП задача удаления тех на кого нету ссылок неактуальна. Мало того такая ситуация вообще не может возникнуть. Актуальна же абсолютно противоположная задача - разрыв взаимосвязей принудительно удаляемых объектов, невозможность существования которых вычисляется по правилам предметной области независимо от количества существующих трасс на рут. А соответсвенно без предварительного разрыва взаимосвязей GC вообще ничего убрать не может. Разрыв же взаимосвязей требует инстантной реакции на разрыв каждой взаимосвязи. Т.е. произведения уборки после каждого изменения ссылки. В таких условиях перебор мусора гораздо дешевле, и кроме этого обеспечивает принудительное/самоудаление объектов по причинам не зависящим от изменения ссылок и корректное управление ресурсами которое GC обеспечить не в состоянии от слова совсем.
Учите матчасть. Все давно обосновано и расписано на каждом заборе.

Добавлено через 9 минут
Цитата Сообщение от Croessmah Посмотреть сообщение
3) Нет VCL
Ну этот пункт вы зря добавили. То что VCL в сфере учета на сегодняшний день наиболее годная никак не делает ее годной к другим более крупным и важным сферам типа САПР и промавтоматики где она ограниченно годня для весьма узкого круга задач.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,304
22.04.2019, 22:44
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В ООП нет понятия нужен/не нужен. Есть понятие может продолжать/существование не может.
Почему именно в ООП? Обоснуйте нецелесообразность данной теории в том-же Си?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Соответственно при убивстве хозяина объект должен быть убит вне зависимости от того сколько других объектов с ним взаимосвязаны.
Так если другие объекты тоже взаимосвязаны, как понять (на уровне GC) кто на данный момент "хозяин"? Или Вы хотите сказать, что "хозяин" всегда тот, кто именно создал объект? А как же поступать со сценарием, где объект создан в одном месте, а потом передан в расположения "другого департамента"?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Мало того такая ситуация вообще не может возникнуть.
А как же все интересные истории про утечки? Теория - это одно, а практика частенько выявляет абсолютно другие, непредвиденные реалии. Есть наверное единицы, чувствующие себя как рыба в воде оперируя brainfuck-ом. Но для большинства смертных, это просто Ад. И если и возникла идея автоматизации и контроля утечек, то на базе печального опыта.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А соответсвенно без предварительного разрыва взаимосвязей GC вообще ничего убрать не может.
Эти разрывы происходят имплицитно. Но ничего Вам не мешает обнулить ссылку.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Разрыв же взаимосвязей требует инстантной реакции на разрыв каждой взаимосвязи. Т.е. произведения уборки после каждого изменения ссылки.
Так это то, о чём я и говорил. По сути Вы говорите о запуске GC при каждой модификации какой-либо ссылки. Данному делу нужны ресурсы, и серьёзные. По сему, сие не является выгодной сделкой.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Учите матчасть. Все давно обосновано и расписано на каждом заборе.
Только вот люди, создавшие GC, и те кто с ними работали, прошли мимо этих заборов. Так?

Вы, я так вижу, один из тех, кто наивно считает, что люди работающие в Гигантах как Оракл идиоты. Я на такие заявления смотрю с большой иронией. Это как когда Жора дрелью выделывает дырку в моторе от BMW, что бы перевести его с бензина на газ. А те 20 человек, которые докторские защитили на этом моторе - фуфломицин.

И опять так и, много лирики, мало по делу. На мой взгляд, фразы в 100500 слов живописно описывающих флору и фауну, надо оставить писателям. Мы - техники. Надо выражаться лаконично и чётко. Без всяких:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
То что VCL в сфере учета на сегодняшний день наиболее годная никак не делает ее годной к другим более крупным и важным сферам типа САПР и промавтоматики где она ограниченно годня для весьма узкого круга задач.


Я Вам признаюсь: реально я по своему профилю не Java-ист. По большому счёту я работаю с совершенно другими языками, с ориентаций на нативные бинарники. Я из тех, кто считает, что "низы" знать надо, что чрезмерная фреймворкизация это скорее плохо, чем хорошо, что от этого теряется чувство реальности происходящего и т.д. и т.п. И что знающие ассемблер люди нужны по сей день. Но (!!!), отрицать, что Java привнесла свой вклад и заняла свою нишу, на мой взгляд просто глупо.

Интересно. А Вы сами знаете Java (не синтаксис языка но и основные библиотеки)? Вы работали с ней когда-либо, и если да, то в какого рода проектах и сколько времени?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2019, 22:44
Помогаю со студенческими работами здесь

Оптимизация производительности программ на С++
Какие более известные узкие места есть в программах на С++? Из того что я знаю: 1. Должен быть хороший алгоритм 2. Как можно меньше...

Оценка производительности программ
Как оценивать производительность программы? Например, время выполнения конкретного участка кода. С помощью специальных средств?

Сравнение производительности С++ и С# на конкретном примере
Приветствую знатоков С++ ! Можно ли на С++ вычислить быстрее, чем на C#, переменные для решения уравнения x ^ 3 + y ^ 3 = z ^ 3 - 1 К...

Сравнение производительности двух ноутбуков
Я хочу купить MICROSOFT SURFACE 3 pro. Его параметры таковы: Процессор Intel Core i5-4300U Оперативная память 8 ГБ DDR3-1600 ...

Сравнение производительности одного и того же кода С++ и C#
В интернете натолкнулся на одну статью. Где описывается производительность одного и того же кода на С++ и C# язык Мне нужна помощь , в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru