Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Dmitry Fedoseev:
Вот, пришпиливаю:
Спасибо. Это интересно (я таких результатов не получал). Выходит, что даже в стеке объекты размещаются без должного выравнивания, это печально ...
Спасибо. Это интересно (я таких результатов не получал). Выходит, что даже в стеке объекты размещаются без должного выравнивания, это печально ...
ЗЫ: если кто тестит, то неплохо пришпиливать свои результаты сюда.
Так ведь у вас же с выравниванием, раз такие результаты не получали.
Там моё выравнивание ни при чём. Там проверка адреса стекового объекта на кратность 8
Была надежда на то, что объекты в стеке размещаются с самым строгим требованием по выравниванию. Тогда можно было бы чего-то там ровнять ручками для ускорения. А теперь всё, это полный фейл - компилятор всё испортит своей непредсказуемостью.
Приходило в голову. Но х.з., понятия не имею как оно там устроено, и полагаться на такое не стану и никому не советую.
Но мне вот что больше интересно - ну вот кому и для чего так сильно потребовалось читать невыровненные данные? Компилировали всегда с необходимыми добивками, какие были проблемы? К чему было усложнять архитектуру тратя кучу транзисторов на эту сомнительную фигню (и чего там по энергопотреблению тоже вопрос). Не зря же со всякими микроконтроллерами такие фокусы вообще не пройдут https://habr.com/en/post/309144/ (да даже в телефонах проблемы будут, хотя может и туда этот "прогресс" дошёл).
Но мне вот что больше интересно - ну вот кому и для чего так сильно потребовалось читать невыровненные данные? Компилировали всегда с необходимыми добивками, какие были проблемы? К чему было усложнять архитектуру тратя кучу транзисторов на эту сомнительную фигню (и чего там по энергопотреблению тоже вопрос).
Ну да, и с каменными топорами раньше бегали... А ничего, что ваше выравнивание ведёт к перерасходу памяти? Меня например такая перспектива совершенно не устраивает.
Решил тоже прогнать ваш тест - разница около 5% (причём проц тоже довольно старый - core i5 6-летней давности). Так что всё сводится к проблемам вашего древнего железа. Про энергопотребление вообще улыбнуло ) Ну давайте ещё сделайте тест на энергопотребление
Ну язвите, а чего делать, если нет ответа на простой вопрос
Именно при добавлении поддержки dotnet библиотек и было добавлено выравнивание полей структур/классов pack.
Если говорить коротко и просто, то работает оно так:
Для каждого из типов (char, short, int, ...) есть свой allignment (1, 2, 4, байта соответственно) по умолчанию.Для поля структуры выбирается минимальное из двух выравниваний: по-умолчанию и заданное пользователем (через pack)
Зачем в dotnet библиотеках используется выравнивание меньше натурального?
Про энергопотребление вообще улыбнуло ) Ну давайте ещё сделайте тест на энергопотребление
Ну обогреватель от розетки некритично, конечно, а вот микроконтроллер или телефон, который хочет кушать раз в пару часов - уже беда.
А ничего, что ваше выравнивание ведёт к перерасходу памяти? Меня например такая перспектива совершенно не устраивает.
Ничего, если бы это было так критично, то на процессорной заре о выравнивании вообще бы не заморачивались и сразу бы сделали как сейчас. Видимо минусы всё же перевешивают плюсы.
ЗЫ: кстати, чтобы не подумали что я тут защищаю свою приверженность какому-то старью - у меня валяется ноут тоже с каким-то там intel ix, но не пользуюсь, вроде и этого хватает пока.
А ничего, что ваше выравнивание ведёт к перерасходу памяти? Меня например такая перспектива совершенно не устраивает.
А вас не пугает, что c# hello world отжирает 7 метров памяти (а сейчас уже больше, наверное)? https://stackoverflow.com/questions/5224020/how-to-minimize-memory-usage-in-windows. А вы тут на спичках экономите. Смешно, честное слово, ну зато там на выравнивание забили, молодцы. Прогресс, это уже не каменные топоры, это высочайшие технологии ))
Решил тоже прогнать ваш тест - разница около 5%
Старенькая i7ка, разницы не обнаружил ни на обсуждении ни сейчас. своими тестами тоже разницы не обнаружил.
Хотя пытался и думал что она будет.
А вас не пугает, что c# hello world отжирает 7 метров памяти (а сейчас уже больше, наверное)? https://stackoverflow.com/questions/5224020/how-to-minimize-memory-usage-in-windows. А вы тут на спичках экономите. Смешно, честное слово, ну зато там на выравнивание забили, молодцы. Прогресс, это уже не каменные топоры, это высочайшие технологии ))
Так это ж целая программа, поэтому эти 7 Мб просто минимальный стартовый размер для программы. А у нас речь о хранении данных. Мне нужно хранить в памяти допустим 500 Гб, а из-за вашего грёбанного выравнивания получится 2 Гб. Просто замечательно!
Вам уже тут несколько человек отписались, что нет никаких проблем с отсутствием выравнивания. Но вам же побрюзжать надо. Ну давайте нам про электричество, про загрязнение атмосферы, про глобальное потепление и т.д., к чему приводит отсутствие выравнивания.
Для поля структуры выбирается минимальное из двух выравниваний: по-умолчанию и заданное пользователем (через pack)
А вас не пугает, что c# hello world отжирает 7 метров памяти (а сейчас уже больше, наверное)? https://stackoverflow.com/questions/5224020/how-to-minimize-memory-usafpLNMckege-in-windows. А вы тут на спичках экономите. Смешно, честное слово, ну зато там на выравнивание забили, молодцы. Прогресс, это уже не каменные топоры, это высочайшие технологии ))
Ради справедливости - аналогичная плюсовая программа отжирает около 5.8 метров (полный размер занятой вируальной памяти, там куча всяких библиотек - сишная, плюсовая, загрузчик ...). Весьма удивлён - что-то сильно мало для шарпа, подозреваю, что автор говорил о ,например, стеке и куче, как он сам выразился "private bytes". Ну не верится мне, что лишь 7 метров.
Мне нужно хранить в памяти допустим 500 Гб, а из-за вашего грёбанного выравнивания получится 2 Гб. Просто замечательно!
Вам уже тут несколько человек отписались, что нет никаких проблем с отсутствием выравнивания. Но вам же побрюзжать надо. Ну давайте нам про электричество, про загрязнение атмосферы, про глобальное потепление и т.д., к чему приводит отсутствие выравнивания.
Да я это давно понял, ещё на первой странице писал - "на новом железе вряд ли есть возможности". Речь то о другом - используют любителей прогресса в хвост и гриву. Сегодня поделки MS поделки стали работать медленно на старом железе (вследствие махинаций с выравниванием, несмотря на проблемы, о которых я несколько раз говорил), а завтра придумают новые супер нужные инструкции, и кончено же старенькие intel ix опять в мусорное ведро. И вы опять с тем же энтузиазмом будете говорить о прогрессе.
В сухом остатке - ни одного вменяемого аргумента в полузу невыровненных данных я не услышал.