А ведь функция действительно очень полезная. Уверен, что первое, о чем задумывается типичный пользователь после установки Windows 11 - это то как утилизировать свой компьютер.
MaxRokatansky: переводит статью из интернета, информативную или нет - как повезет, но хотя бы текст обычно нормальный, в конце рекламирует OTUS.
kesn: пишет не особо связные фамильярные тексты, зачастую без технической смысла, но даже когда он есть - он не ищется, так как заголовок не соответствует статье и специалищированных тегов нет; в конце рекламирует свой телеграм-канал.
и работаю с объектом так, как было написано выше. Зачем? Затем чтобы делать одно выделение памяти вместо двух, что обычно увеличивает производительность/уменьшает фрагментацию кучи.
Не знаю, умеет ли Ваш Vec в такое поведение, если умеет - вопросов нет. Но в плюсах я не знаю как по-другому это сделать.
А вы просто заколхозили структуру с массивом и выделяете ее в куче, с помощью кода, чуть менее, чем полностью состоящего из UB.
А с этого места поподробнее, покажите, пожалуйста, пальчиком на конкретные UB, из которых состоит этот код.
Затем что это позволяет избежать дочерних выделений памяти в объекте, которому нужен вектор не-compile-tile длины, которая, тем не менее, известна на этапе инициализации объекта.
Этого не может быть. Нормальный компилятор как минимум заиспользует инструкцию test вместо cmp.
Удобочитаемый - тот, где путь выполнения выражен простыми для понимания конструкциями вроде цикла while. А не jmp и иди разбирайся куда оно там прыгает.
Даже если не вариант сделать список корней кольцевым, то можно так:
while ( !p->next && p->parent ) p = p->parent;
if ( p->next ) p = p->next;
else
{
while ( p->prev ) p = p->prev;
}
while ( p->f_child ) p = p->f_child;
Автор написал код на ассемблере, транслировал его в плюсы и получил нечитабельное нечто - вот так новость, видимо ассемблер самый понятный в мире язык. Вот, ловите нормальный код:
while ( !p->next && p->parent ) p = p->parent;
p = p->next ? p->next : p;
while ( p->f_child ) p = p->f_child;
В случае видеокарты шедулинг тоже происходит автоматически, никто явным образом не задает что такой-то мультипроцессор будет в данный момент времени вот это вот выполнять. Другое дело что там все ядра одинаковые, и нет проблемы выбора ядра для конкретной задачи.
В целом мне не очень понятно, почему не канает жадный выбор по порядку (сначала заполняем P-ядра, потом E, потом включаем мультитрединг на P). Видимо, или это не слишком хорошо работает, или же Intel решили реализовать это у себя внутри дабы не напрягать разработчиков OC, а MS решили не внедрять это API в Windows 10 :)
Если честно я слабо понимаю на кой черт эти Е ядра нужны.
У экономичного ядра лучше соотношение производительности к площади кристалла и потребляемой мощности. Благодаря маркетологам одной небезизвестной корпорации в последнее время стало очень модно использовать процессор для выполнения сильно паралельных алгоритмов, и в таких задачах набор экономичных ядер при прочих равных будет эффективнее. Вон посмотрите на GPU - там "ядра" и не ядра вовсе, но по производительности в паралельных задачах процессоры с GPU не сравняются никогда.
Это касалось нагрузок не только за пределами игр, но и за пределами серфинга, офисных приложений, да вообще всего кроме многопоточных бенчмарков и приложений для создания контента. Создатели последних, кстати, давно уже догадались перенести многопоточные нагрузки на GPU, которые, между прочим, как раз предназначены для такого, в отличии от CPU. Так что по факту остаются только архивация да компиляция кода.
Мне кажется это пошло еще с момента обнаружения уязвимостей (тех самых, с помощью которых так до сих пор никто никого и не взломал) и появления Ryzen'ов. Теперь Интел всем должен за стагнацию в развитии процессоров, которую Ryzen'ы якобы переломили (а по факту лишь в прошлом году смогли временно перегнать Core'ы). И при этом никого почему-то не волнует, что AVX512 в продуктах AMD вообще не присутствует.
Как в C++ всё сложно. Почему бы не возвращать из функции результат, который либо успех (и возвращаемое значение), либо ошибка (и её описание)?
Если все делать через места пониже спины, то сложно будет в любом языке.
Утверждение, о том, что мьютекс - это базовый примитив многозадачности, мягко говоря, преувеличение. Базовый примитив многозадачности - это accure/release семантика для атомиков.
Как с помощью атомиков перевести поток в состояния сна? Атомики безупречно важны, но и без мьютекса/ивента/критической секции тоже не обойтись.
А ведь функция действительно очень полезная. Уверен, что первое, о чем задумывается типичный пользователь после установки Windows 11 - это то как утилизировать свой компьютер.
Как-то неинтересно по видеозвонку увольнять, лучше бы сняли тикток с танцем, символизирующим уход сотрудников из компании)
MaxRokatansky: переводит статью из интернета, информативную или нет - как повезет, но хотя бы текст обычно нормальный, в конце рекламирует OTUS.
kesn: пишет не особо связные фамильярные тексты, зачастую без технической смысла, но даже когда он есть - он не ищется, так как заголовок не соответствует статье и специалищированных тегов нет; в конце рекламирует свой телеграм-канал.
Даже не знаю где тут крестик, а где трусы...
Есть у меня объект такого плана:
Мне нужно этот этот объект создавать в куче. Допустим имя объекту дается при инициализации и дальше не меняется - тогда я декларацию заменяю на такую:
и работаю с объектом так, как было написано выше. Зачем? Затем чтобы делать одно выделение памяти вместо двух, что обычно увеличивает производительность/уменьшает фрагментацию кучи.
Не знаю, умеет ли Ваш Vec в такое поведение, если умеет - вопросов нет. Но в плюсах я не знаю как по-другому это сделать.
А с этого места поподробнее, покажите, пожалуйста, пальчиком на конкретные UB, из которых состоит этот код.
Затем что это позволяет избежать дочерних выделений памяти в объекте, которому нужен вектор не-compile-tile длины, которая, тем не менее, известна на этапе инициализации объекта.
Этого не может быть. Нормальный компилятор как минимум заиспользует инструкцию test вместо cmp.
Удобочитаемый - тот, где путь выполнения выражен простыми для понимания конструкциями вроде цикла while. А не jmp и иди разбирайся куда оно там прыгает.
Даже если не вариант сделать список корней кольцевым, то можно так:
Автор написал код на ассемблере, транслировал его в плюсы и получил нечитабельное нечто - вот так новость, видимо ассемблер самый понятный в мире язык. Вот, ловите нормальный код:
Настолько различный, что имеет смысл аж мониторинг делать? Интересно.
В случае видеокарты шедулинг тоже происходит автоматически, никто явным образом не задает что такой-то мультипроцессор будет в данный момент времени вот это вот выполнять. Другое дело что там все ядра одинаковые, и нет проблемы выбора ядра для конкретной задачи.
В целом мне не очень понятно, почему не канает жадный выбор по порядку (сначала заполняем P-ядра, потом E, потом включаем мультитрединг на P). Видимо, или это не слишком хорошо работает, или же Intel решили реализовать это у себя внутри дабы не напрягать разработчиков OC, а MS решили не внедрять это API в Windows 10 :)
У экономичного ядра лучше соотношение производительности к площади кристалла и потребляемой мощности. Благодаря маркетологам одной небезизвестной корпорации в последнее время стало очень модно использовать процессор для выполнения сильно паралельных алгоритмов, и в таких задачах набор экономичных ядер при прочих равных будет эффективнее. Вон посмотрите на GPU - там "ядра" и не ядра вовсе, но по производительности в паралельных задачах процессоры с GPU не сравняются никогда.
Да, менять процессор каждый год - это тоже недостижимая мечта для пользователей Интел.
Это касалось нагрузок не только за пределами игр, но и за пределами серфинга, офисных приложений, да вообще всего кроме многопоточных бенчмарков и приложений для создания контента. Создатели последних, кстати, давно уже догадались перенести многопоточные нагрузки на GPU, которые, между прочим, как раз предназначены для такого, в отличии от CPU. Так что по факту остаются только архивация да компиляция кода.
Эхх, завидую. Пока Интел отключает AVX-512, круто наверное сидеть на AMD, у которых этого набора инструкций никогда не было.
Мне кажется это пошло еще с момента обнаружения уязвимостей (тех самых, с помощью которых так до сих пор никто никого и не взломал) и появления Ryzen'ов. Теперь Интел всем должен за стагнацию в развитии процессоров, которую Ryzen'ы якобы переломили (а по факту лишь в прошлом году смогли временно перегнать Core'ы). И при этом никого почему-то не волнует, что AVX512 в продуктах AMD вообще не присутствует.
Если все делать через места пониже спины, то сложно будет в любом языке.
Как с помощью атомиков перевести поток в состояния сна? Атомики безупречно важны, но и без мьютекса/ивента/критической секции тоже не обойтись.
Это уже больше на аутизм похоже.
Это называется "ниасилил".
Нельзя вызвать data race (если использовать safe Rust). Race condition/deadlock полностью поддерживаются.
Эхх, давно я не ловил старого доброго UB. И что со мной не так...