Перегрузка операции минус

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Оксалайя
Сообщения: 27
Зарегистрирован: 01 сен 2015, 12:12

Сионист писал(а):А уж на стколько Вы не профи, так и не передать: Изображение.

Пф. А вы уверены, что такой же размер була будет на сферических компьютерах будущего? Задумайтесь!
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Romeo писал(а):Аргументируй.
. Вот же:
Romeo писал(а):Sereg, если в моём алгоритме вызвать для результирующей строки алгоритм std::unique, о котором Сионист не знает, то результат будет ровно такой же, как то, что Сионист хотел добиться на словах.
. Какие ещё нужны доказательства, что чукча писатель? Ведь ни каких попыток сделать символы уникальными не было.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Оксалайя писал(а):Пф. А вы уверены, что такой же размер була будет на сферических компьютерах будущего? Задумайтесь!
Если даже бул вырастет, то уж char с байтом вырастут подавно, а единица измерения указана байт, а не октет.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Оксалайя писал(а):Мои глаза кровоточат...
Ага, это вместо куда более очевидного прямого прохода и привычной индексации.

Код: Выделить всё

for (int i = 0; i < 256; Flags[i++] = true);
Это называется пытаемся сэкономить на операции "плюс", и полностью убиваем читабельность кода. Причём именно пытаемся, так как современные компиляторы эти вещи легко оптимизируют.

Да что там говорить, это всего лишь маленький кусочек. Я уже выше писал, что читать его код у меня не хватает нервов. Просто кошмарный стиль.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Оксалайя
Сообщения: 27
Зарегистрирован: 01 сен 2015, 12:12

Сионист писал(а):Если даже бул вырастет, то уж char с байтом вырастут подавно, а единица измерения указана байт, а не октет.

Ой, а поведайте нам, дремучим, чем октет от байта отличается, раз уж Вы их противопоставили?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а):. Вот же: . Какие ещё нужны доказательства, что чукча писатель? Ведь ни каких попыток сделать символы уникальными не было.
Во-первых, этот указанный мой пост был после твоего поста с обвинениями. Во-вторых, я уже написал выше, код твой разбирать не собираюсь, он чудовищный. А вывод об уникальности я сделал из твоей теоретической писанины, которая была до кода. Если ты пишешь словами одно, а в коде пишешь совсем другое - это уже твои проблемы.
Сионист писал(а):А уж на стколько Вы не профи, так и не передать
Сионист, а на студии будет 4. Что это доказывает? Да ничего, так же, как и твоя картинка. Открой стандарт и прочти уже, что такое bool наконец-то. Твоё дилетантство просто бесит.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Romeo писал(а):for (int i = 0; i < 256; Flags[i++] = true);
А ничего, что индексация массива каждый раз вычисляет адрес, при этом инкремент у нас остаётся.
Romeo писал(а):Это называется пытаемся сэкономить на операции "плюс", и полностью убиваем читабельность кода. Причём именно пытаемся, так как современные компиляторы эти вещи легко оптимизируют.
Если Вы даже арифметику указателя не в состоянии прочитать, то за перегрузку операций над строками и массивами Вам браться рано.
Romeo писал(а):Во-первых, этот указанный мой пост был после твоего поста с обвинениями. Во-вторых, я уже написал выше, код твой разбирать не собираюсь, он чудовищный. А вывод об уникальности я сделал из твоей теоретической писанины, которая была до кода. Если ты пишешь словами одно, а в коде пишешь совсем другое - это уже твои проблемы.
Я лишь объяснил, чем этот код пахнет и чего можно добавить, чтоб получить нормальное множество. А задачу решил так, как она поставлена в первом посте, безо всяких добавлений. Так что учите за одно и русский, господин товарищь. А "обвинение" не зря в настоящем времени, а не в прошедшем.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а):А ничего, что индексация массива каждый раз вычисляет адрес, при этом инкремент у нас остаётся.
Я это отлично понимаю, более того, я объяснил уже, что думаю по поводу такой оптимизации:
Romeo писал(а):
Это называется пытаемся сэкономить на операции "плюс", и полностью убиваем читабельность кода. Причём именно пытаемся, так как современные компиляторы эти вещи легко оптимизируют.
Сионист писал(а):Если Вы даже арифметику указателя не в состоянии прочитать, то за перегрузку операций над строками и массивами Вам браться рано.
И об этом мы тоже уже говорили. Прочесть не проблема. Важно то, сколько уходит на это времени. Если ты поймал всю строку взглядом и сразу понял, что она делает, то ты переходишь сразу глазами к следующей и без промедления продолжаешь разбор кода. А если видишь адресную арифметику, то подспудно начинаешь подозреваться, что тут делается что-то умное и тратишь время на разбор каждого символа. Ещё раз говорю, что в коммерческом коде ВСЕГДА жертвуют этой операцией сложения (адреса и индекса), на которой мы экономим, ради читабельности и прозрачности кода. Тем более, что оптимизация весьма спорная - большинство компиляторов делают это автоматически. Если интересно, можешь открыть дизассемблемром код в релизе и посмотреть.
Сионист писал(а):Так что учите за одно и русский, господин товарищь
Прям прочёл и представил, что мне это товарищ Сталин говорит со свойственным только ему акцентом. Прям ух. Реалистичность картинки довёл до вершин мягкий знак в конце.
Сионист писал(а):А "обвинение" не зря в настоящем времени, а не в прошедшем.
Извини, а вот это место никак не смог понять. Из-зо всех сил пытался существительное поставить в настоящем или в будущем времени, ничего не вышло. Всегда думал, что это только с глаголами можно делать. Видимо, не хватает знаний языка...
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

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

Со студии станется и 8192, это её проблемы. Зачем расходовать больше необходимого минимума, если достаточно одного бита? Ладно, меньше байта нельзя по особенностям адресации. Но зачем больше? Вот если байт вдруг станет меньше семи бит, то имеет смысл бул сделать меньше чара (чару нужно хотябы 7).
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а):Ровно столько же. А если и меньше, то на миллисекунды, что на фоне изменчивости самого времени не заметно.
Речь идёт о секундах, а не миллисекундах. И это только на одно такое место. А если такого кода много (а он у тебя с листинге сплошь и рядом), то читать его становится просто невозможно.
Сионист писал(а):Ну что Вы тему читали, я и не отрицал. Но сами смерили по себе, что я больше тему не читаю. И доказательство не тормознуло.
То есть сначала не отрицаешь. Но потом говоришь, что по себе "смерил" (wtf?), то есть всё таки выходит, что отрицаешь? А что значит "доказательство не тормознуло" - я вообще без понятия? Жаргонизм? Где здесь причина? Где следствие? Я сначала думал, что тебя трудно понять, так как русский язык не родной, но уже начинаю подозревать, что просто проблемы с логикой, и от языка это никак не зависит.
Сионист писал(а): Со студии станется и 8192, это её проблемы. Зачем расходовать больше необходимого минимума, если достаточно одного бита? Ладно, меньше байта нельзя по особенностям адресации. Но зачем больше? Вот если байт вдруг станет меньше семи бит, то имеет смысл бул сделать меньше чара (чару нужно хотябы 7).
Хорошо, объясню, раз не понимаешь. Вот так бы сразу сказал, что не соображаешь в этом ничего, я бы нормально объяснил. Я ведь сразу тебе сказал, что не хочу углубляться в этот вопрос, но ты решил блеснуть и выложить скрин c MinGW.

Во-первых, сразу скажу, что напрасно ты фыркаешь на студию. Скажу тебе, как человек, который очень глубоко погружался в это (занимался портированием кода целого проекта со студии на MinGW). Компилятор MinGW - полный отстой. Студия "делает" его по всем параметрам: скорость компиляции (почти в два раза), оптимальность кодогенерации, размер бинарей (у MinGW бинарники раздуты до безобразия) и ещё по многим другим. Да, я тоже привык кричать, что Майрософт - фууу. Но против фактов не попрёшь. Да, в студии очень долго не вводили полной поддержки 11-го стандарта, но зато компилятор там был вылизан от и до, поверь. Попрошу заметить, что сейчас я говорю о последних студиях, так как первые студии (5-я, 6-я, да и 2000-ная) были действительно чудовищными поделками.

Теперь о bool. Во-первых скажу, что стандартном его размер не закреплён. Поэтому твои скрины бестолковы. Во-вторых, отвечу на твой вопрос, зачем использовать больше памяти, чем её необходимо. Знаешь, что такое aligment и зачем он используется? Он ведь тоже приводит к перерасходу памяти. Всё взаимосвязано. Дело в том, что, как это не парадоксально, но все операции с целым регистром работают быстрее, чем с частью регистра. Например mov ax, 5, будет работать медленнее, чем mov eax, 5 (на 32-разрядной платформе). Почему так? Особенность архитектуры процессоров x86. Поэтому, если сделать bool размером с int (иными словами по размеру регистра), то все операции с ним будут выполняться быстрее, чем если бы мы его сделали размером в char в погоне за оптимизацией по размеру. По тем же самым соображениям делается и выравнивание (aligment) для структур.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить