Написать программу ** языке C++

0 голосов
13 просмотров

Написать программу на языке C++


image

Информатика (35 баллов) | 13 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

#include

#include

using namespace std;

int main() {

 srand( time(0) );

 int *mas = new int[100];

 int even_c = 0, odd_c = 0;

 for (int i = 0; i < 100; ++i) {

 mas[i] = 1 + rand() % 100;

 if (mas[i] % 2 == 0) even_c++; else odd_c++;

 }

 int *even = new int [even_c];

 int *odd = new int [odd_c];

 int temp = 0;

 for (int i = 0; i < 100; ++i) {

   if (mas[i] % 2 == 0) {even[temp] = mas[i]; temp++;}

 }

 temp = 0;

 for (int i = 0; i < 100; ++i) {

   if (mas[i] % 2 != 0) {odd[temp] = mas[i]; temp++;}

 }

delete[] mas;

 cout

 for (int i = 0; i < even_c; ++i) {

   cout

 }

 cout

 for (int i = 0; i < odd_c; ++i) {

   cout

 }

}

(310 баллов)
0

Компилируем, запускаем и замеряем следующие показатели:1. Размер бинарей2. Время выполнения3. Объем памяти для в рантайме + обьем по куче + доп обьем по куче

0

Что мы имеем, по результатам выполнения я составил диаграммы, вы их сможите посмотреть по ссылкам, я их загружу на файлообменник, а так же усредненные данные тут

0

Начнем с размера бинарников, без какой либо оптимизации собраные под G++, вот его версия кстати:g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516Размер вашего кода в скомпилированном бинарнике составляет:16 KМоего же24 КТо есть 150% от вашего или в полтора раза больше. Если их компилить с флагом -O3, то ваш бинарь весит:16KМой же16KТо есть фактический размер бинаря при билде с флагом оптимизации меньше, чем при тех же условиях - ваш

0

Время выполнения программ- Синяя ваш код- Красная линия мой код100 выполненийhttps://prnt.sc/m8n5tk1000 выполненийhttps://prnt.sc/m8n5yqКак видите ваш код выполняется чаще всего в разы дольше чем мой, посмотрите особенно вторую картинку и размах пиков выполнения.Еденицы измерения там взяты из измерения - миллисекунды кажись.

0

По потреблению памяти, ниже привожу усредненное значение по выполнению 100 итераций. Замерял данные с помощью тулзы valgrind.Ниже можно ознакомится с результатом работы вашего примера:Total: 73,552Heap: 73,504Extra Heap: 48а теперь моего примера:Total: 74,152Heap: 74,128Extra Heap: 24Очевидно, что ваша реализация выигрывает всего на 600-630 байт потребления памяти.Приведены измерения для пикового значения потребления памяти.Еденицы измерения - байты.

0

Какой из этого можно сделать вывод?Мне было очень скучно, если я вам это рассписал.А ещё, можно отметить, что даже с оптимизацией (все тесты и замеры выполненны с компиляцией с флагом оптимизации) ваш солюшн решает мой только в потреблении памяти, всего на 600 байт, зато в разы медленнее, в отдельных случаях в 2 раза.

0

Так что пишите хороший код, коль с такой сложной абстракцией мой код все равно работает лучше, не забывайте return, а так же подчищать память, а иначе это позорно...Спасибо за внимание)

0

P.S.Могу написать код ещё быстрее, избегая использования векторов))

0

К слову тоже всего одним циклом, у вас 5, а у меня 1, ну круто же)

0

К слову наврал, по графикам видно что код работает быстрее в среднем не в 2 раза а в 3-4