Pull to refresh
1
0.1
Юрий Муравьёв @y_mur

User

Send message

Ага, особенно когда выделяешь память под массив, который по ссылке передается функции, которая его потом заполнит данными ;)

Я тоже "старый ворчун", который любит С++ именно за приоритет в производительности. На мой взгляд, в программах 99% кода работает с данными в которых нет никаких secret-тов и по умолчанию лишать этот код производительности ради 1% специального кода работающего с паролями и т.п. на мой взгляд явный перебор. Тем более что и сейчас ничего не мешает писать этот 1% специального кода безопасно. Да, для этого нужно больше внимания и понимания, но как раз этот 1% его в любом случае требует.
Опциональный ключ -ftrivial-auto-var-init=pattern прекрасен для отладочных сборок и для того самого 1% критичного к безопасности кода, но это не повод пихать его везде не глядя.

[offtop] Сдаётся мне что вся эта шумиха с “жуткой вредностью” CO2 сильно преувеличена. А так называемое “вызванное им глобальное потепление” то ли естественные колебания климата, то ли как раз его восстановление к норме после аномального похолодания (об этом нынче много версий на ютубе). И деятельность современного человека в этом вопросе ничтожно мала.[/offtop]

При этом современные техногенные выхлопы содержат кучу по настоящему вредных веществ, вот лучше бы на борьбу с ними гранты тратили. Сизый смог над городами явно не из прозрачного СО2 состоит.

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

В моих тестах на алгоритме Гаусса (решение системы линейных уравнений) сравнение двойной адресации и расплющивания в линейный массив дают:

  • на clang: производительность одинаково высокая (как в варианте с двойной адресацией на msvc).

  • на msvc: "расплющивание" мешает компилятору применять SSE / AVX векторизацию из-за чего вариант с двойной адресацией работает в 2-3 раза быстрее.

И это тесты без использования выигрыша от возможности быстрой перестановки строк.

Пруфы выложу позже, когда наиграюсь с этими эффектами и оформлю их в статью.

Не вникал в код и пока вообще не понял что здесь и о чем.

Просто возникла мысль, что если матрицу сделать в стиле С++, то перестановку строк можно будет делать очень быстро через перестановку ссылок на строки.

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

А можно привести примеры, где такое можно встретить на практике? Зачем оно может понадобиться?

Не все так просто:)

Дело в том, что исторически изначально электроны считались положительными. Именно с этой идеей и работали Ом, Кирхгоф и др. Потом узнали что электроны отрицательны, но в инженерной схемотехнике договорились считать что ток по прежнему течет от + к -, чисто для совместимости версий.

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

T& operator[](size_t const r, size_t const c) noexcept
{
   return data_[r * C + c];
}
T const & operator[](size_t const r, size_t const c) const noexcept
{
   return data_[r * C + c];
}

А можете расшифровать эту магию.
Что здесь означает T& и T const & и зачем нужны они оба, а не только один из них?

С температурой замерзания/таяния я пока лично не игрался.

С кипением в микроволновке всё очень интересно. Если налить обычную воду в обычный стеклянный стакан и довести в микроволновке до кипения, потом достать стакан - кипение тут же прекратиться. Но если в эту только что переставшую кипеть воду сунуть термометр, то он покажет около ~105°С (бытовые термометры имеют полное право привирать на 1-2°С, но +5°С уже явно за пределами этой погрешности) и вокруг него вода начнёт кипеть - термометр (который не выделяет, а забирает тепло) в такой воде провоцирует кипение. Аналогичный эффект кипения вызывает любой предмет, например та же ложка, погружённая в такую воду. Но стенки стакана, в котором вода изначально кипятилась, кипение этой перегретой воды не провоцируют, точнее провоцируют, но при ещё более высокой температуре.

Не понял, а что мешает у нас публиковать свой авторский контент, прикладывая к нему свободную лицензию по "иностранному" шаблону?

Автор же явно написал что именно и на каких условиях можно делать с его контентом. Это же публичная оферта, на которую можно ссылаться или нет?

ПС: контент с "сиротским" авторским правом меня тоже напрягает в вопросе можно ли им воспользоваться, когда он вроде бы свободно гуляет по сети, или на самом деле нельзя.

Острая для меня тема: абстрактность математики - палка о двух концах. С одной стороны хорошо что математика развивается как универсальный самодостаточный инструмент, не ограниченный узкими прикладными задачами.

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

Затем следуют абстрактные математические операции (интегрирование, дифференцирование, матричные операции и т.д.) в которых связь с физическим смыслом отсутствует полностью. Увидеть хоть какие-то проблески физического смысла в промежуточных вычислениях задача крайне нетривиальная и обычно никто этим заниматься даже не пытается. И это ещё одно место где математическая модель, сохраняя свою восхитительную математическую строгость, запросто может уплыть очень далеко от моделируемого реального объекта.

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

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

Планирую к написанию серию статей с конкретными примерами по этой теме, возможно и здесь их тоже размещу.

Тогда уж основателей тензорного счисления, имхо, скорее следует назвать сопроматчиками :) Но, наверно, всё же не стоит переносить на тот период современную классификацию естественных наук.

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

А еще на ВДНХ меня впечатлили образцы оборудования для первых космических кораблей - там реально всё тщательно замотано синей изолентой!

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

Понравилось ваше структурирование информации!
Начиная с уточнения года прямо в названии! (а то часто находишь в сети такую "современную" заметку, а потом оказывается что ей уже 10 лет).
И то, как информация разложена по полочкам.
Что хотелось бы улучшить:
- на тач-экране пример с "Resize Me" не ресайзится, а в примере CONTAINER QUERIES разделитель перемещается  коряво, имхо мобильный интернет сейчас популярен и хочется чтобы примеры это учитывали;
- в примере VIEW TRANSITIONS кнопки "+", "-" маленькие и расположены так что в режиме 1х их не видно даже при скролинге;
- в примере SUBGRID потерялась картинка.
А в остальном статья порадовала - спасибо!

Попался ещё способ сделать "дзиньк" японской бензопиле
std::string hello = "hello";
std::wstring message = std::format(L"{}", hello);

Здесь вываливается сразу куча ошибок и все эти ошибки ведут внутрь кишков самого format, вместо того чтобы сообщить о том что format не умеет смешивать string c wstring и указать на место где я это попытался смешать.
Во всяком случае в MSVC 2022 так, в других компиляторах не проверял.

Вот что бывает, когда не осилил StringTable.

А можете пояснить как совместить StringTable с модульностью?
Если выносить всё строки в ресурсы то становится недостаточно включить/исключить заголовочный файл, надо ещё где то хранить список строк этого модуля и добавлять/удалять их в ресурсах.

PS: это не возражение - реально пробую осилить StringTable.

Недавно экспериментировал с precompiled headers в MSVC 2022 и пришёл к выводу что не зря их теперь там по умолчанию отключили. Сейчас студия предкомпилирует всё подряд и довольно неплохо отслеживает что и когда нужно перекомпилировать, а что нет. Ускорения от включения precompiled headers не заметил.

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

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

 

1

Information

Rating
2,920-th
Location
Саратов, Саратовская обл., Россия
Date of birth
Registered
Activity