Как стать автором
Обновить
9
0

Пользователь

Отправить сообщение

А ведь функция действительно очень полезная. Уверен, что первое, о чем задумывается типичный пользователь после установки Windows 11 - это то как утилизировать свой компьютер.

Регулировать рынок - да, не нужно. А вот усложнить жизнь криптовалюте как средству спекуляции и отмывания денег - вполне, давно пора. А там глядишь и через пару месяцев рыночная цена волшебным образом упадет.

Как-то неинтересно по видеозвонку увольнять, лучше бы сняли тикток с танцем, символизирующим уход сотрудников из компании)

MaxRokatansky: переводит статью из интернета, информативную или нет - как повезет, но хотя бы текст обычно нормальный, в конце рекламирует OTUS.

kesn: пишет не особо связные фамильярные тексты, зачастую без технической смысла, но даже когда он есть - он не ищется, так как заголовок не соответствует статье и специалищированных тегов нет; в конце рекламирует свой телеграм-канал.

Даже не знаю где тут крестик, а где трусы...

Есть у меня объект такого плана:

struct Obj
{
	uint32 a;
  float b;
  string name;
};

Мне нужно этот этот объект создавать в куче. Допустим имя объекту дается при инициализации и дальше не меняется - тогда я декларацию заменяю на такую:

struct Obj
{
	uint32 a;
  float b;
  size_t name_length;
  char name[0];
};

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

Не знаю, умеет ли Ваш 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. Так что по факту остаются только архивация да компиляция кода.

Эхх, завидую. Пока Интел отключает AVX-512, круто наверное сидеть на AMD, у которых этого набора инструкций никогда не было.

Мне кажется это пошло еще с момента обнаружения уязвимостей (тех самых, с помощью которых так до сих пор никто никого и не взломал) и появления Ryzen'ов. Теперь Интел всем должен за стагнацию в развитии процессоров, которую Ryzen'ы якобы переломили (а по факту лишь в прошлом году смогли временно перегнать Core'ы). И при этом никого почему-то не волнует, что AVX512 в продуктах AMD вообще не присутствует.

Как в C++ всё сложно. Почему бы не возвращать из функции результат, который либо успех (и возвращаемое значение), либо ошибка (и её описание)?

Если все делать через места пониже спины, то сложно будет в любом языке.

Утверждение, о том, что мьютекс - это базовый примитив многозадачности, мягко говоря, преувеличение. Базовый примитив многозадачности - это accure/release семантика для атомиков.

Как с помощью атомиков перевести поток в состояния сна? Атомики безупречно важны, но и без мьютекса/ивента/критической секции тоже не обойтись.

Это уже больше на аутизм похоже.

Нельзя вызвать data race (если использовать safe Rust). Race condition/deadlock полностью поддерживаются.

1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность