Почему функции rand и lrand48 из glibc годятся только для Тетриса: о случайных числах всерьёз Функцию rand из стандартной библиотеки языка Си для генерации псевдослучайных чисел, наверное, не ругал только ленивый. В довольно известном докладе Rand considered harmful рассказывалось о проблемах с переносимостью, ограниченным диапазоном, многопоточностью, качеством и т.п. Иногда в учебниках упоминают о том, что алгоритм в rand может быть не очень качественным, иметь проблемы с младшими битами, периодом, прохождением статистических тестов. Но крайне редко можно увидеть разбор конкретных критериев…
Слушайте подкаст про защиту персональных данных. Специалисты рассказывают про аудит, документацию и требования регуляторов: 152-ФЗ, 1119-ПП, 21 приказ ФСТЭК России, ГОСТ 51583-2014. Еще больше полезного в канале КСБ-СОФТ. Подписывайтесь, чтобы вовремя узнавать об изменениях в приказах о киберзащите: https://tglink.io/9339e98213d5dd?erid=2W5zFJBkmg5 #реклама О рекламодателе
Динамический полиморфизм против std::variant с указателями: Разрушаем мифы о скорости std::visit (v.2*) В экосистеме современного C++ прочно укоренилось мнение: классический динамический полиморфизм через виртуальные функции (vtable) и наследование — это устаревший, медленный и недружелюбный к кэшу процессора механизм. В качестве «серебряной пули» модно предлагать связку std::variant и std::visit. Если вы спросите любого виртуального умника (ИИ) он до последнего будет убеждать вас что std::variant и std::visit всегда(!) лучше чем виртуальные функции, даже не сомневайтесь. Проблема в том что с…
Оптимизация GUI на Qt Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить меха…
Как правильно вызывать CUDA Вероятно, вам уже попадались подобные руководства по CUDA: хрестоматийный пример «Hello World», в котором перемешан код для ЦП и графического процессора. Всё это сложено в один гетерогенный файл с исходниками на CUDA C++, а для запуска ядра применяется синтаксис NVCC с тройными угловыми скобками , который уже стал культовым: #include #include __global__ void kernel() { printf("Hello World from block %d, thread %d\n", blockIdx.x, threadIdx.x); } int main() { kernel(); // Возвращает `void`?! return cudaDeviceSynchronize() == cudaSuccess ? 0 : -1; } Время идёт, а тако…