Угадай где говнокод!?

Вот два примера реализации функции для обнуления массива:


int a[n];

...

void clear_array_1()

{

int i; 

for (i = 0; i < n; i++)

{

a[i]=0;

}

}

....

void clear_array_2()

{

a[0]=0;

a[1]=0;

a[2]=0;

...

a[n-2]=0;

a[n-1]=0;

}

...


Информация к размышлению:


Функция void clear_array_1

- достоинства, в случае большого массива малое количество строк кода (меньший конечный размер приложения) ; 

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


Функция void clear_array_2

- достоинства, наибыстрейшее выполнение функции (одна инструкция на один элемент массива), не используется оперативная память, легко читаемый код.

- недостатки, в случае большого массива большое количество строк кода (дополнительные затраты времени на написание, но если платят за количество строк, резко превращается в достоинство! ;-) ).


Разъясните мне бестолковому, какая из функций говнокод, а какая для тру отцов???

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

Во многих языках массивы - итерируемые объекты. "Уровень бог" выглядит так:
def clear_array(){for i in array{ i = 0;}}


А еще наслаждайся

https://en.cppreference.com/w/cpp/algorithm/fill

раскрыть ветку (8)
1
Автор поста оценил этот комментарий

В языках "уровня бог" нет переменных в принципе.

Циклов тоже нет, кстати.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Массивы нервно курят в сторонке, вместt с делением и умножением :-))

0
Автор поста оценил этот комментарий

For in - синтаксический сахар и в любом случае расход памяти будет больше по сравнению с доступом по индексу, тут речь идёт о тотальной экономии ресурсов. Сегодня масштабируемость, читаемость наверно важнее чем несколько сэкономленных байт.

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Аргументики?
Создаю цикл - создаю переменную типа int, где лежит индекс. И получается плохо. А теперь внимание. Что мне мешает выделить переменную 8 бит, если мы говорим о массиве с границей в сто элементов?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

> Аргументики?


В примере выше обнуление массива без цикла экономнее, так как не требует дополнительной переменной. У ембедчиков своя атмосфера, они там байтики считают до сих пор иногда.

Ну а если отвлечься от ембеда, то мутабельность, конечно, зло. Переменные - злое зло.

Автор поста оценил этот комментарий

Вариант по ссылке, похоже на 32bit оси не запустится, памяти не хватит ;-)

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Чего-то я не подумала :) Все равно такой код модифицируется только руками. Было бы в C что-то типа eval()... то есть можно, конечно, переполнить буфер, но это высший пилотаж. Лучше потерять пару бит, чем отстрелить себе ногу.

раскрыть ветку (1)
Автор поста оценил этот комментарий

на самом деле, тут дело не столько в оперативке, сколько в количестве инструкций процессора, для заполнения одной ячейки массива, во втором варианте на одну ячейку, одна инструкция, а в первой, заполнение инкремент проверка переход, то есть на 75% дольше ;-) и если это низкоуровневая функция, то фризы будут нарастать с каждым повышением уровня абстракции (от железа естественно).

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества