Рубрика «С++» - 22

Прочитал статьи про комбинаторную кодогенерацию на С++ в контексте линейного поиска в базе данных: Возможности оптимизации в языках C и C++ и Скорости разработки и исполнения не достижимые на С. Попробуем достигнуть скоростей разработки и исполнения на C?

После того, как я запустил компиляцию С++ кода из второй статьи, мне стало интересно — успею ли я написать аналог на С, который будет работать быстрее, пока код… компилируется? Не успел, код скомпилировался через 5 минут, а аналог на С писался все 15.

Итак, постановка задачи — есть структура из нескольких полей, есть фильтр, который проверяет, находится ли каждое поле в указанном диапазоне. Или не проверяет — для каждого поля. Нужен код который эту проверку по фиксированному фильтру делает очень быстро. Данные случайные, так что чем меньше условных переходов тем лучше — предсказание переходов на случайных данных работает так себе. Читать полностью »

Приглашаю всех желающих присоединиться к open-source проекту по разработке кроссплатформенного 2D сетевого шутера.
Основная идея — сделать многопользовательский сетевой шутер с техникой и различными режимами игры по аналогии с серией игр battlefield.
Используемые технологии: C++11, Qt5, Box2d, protobuf, github. Так же ведётся работа над клиентом на Java.

Базовая функциональность (клиент/сервер, карты, оружие, техника) уже частично реализована. Основные задачи над которыми предлагается работать:

  • Различные виды оружия
  • Различные виды техники
  • Улучшение карт (разные типы поверхностей, автогенерация текстур, etc.)
  • Игровое меню
  • Списки игровых серверов
  • Автообновление
  • Редактор карт
  • Портирование клиента под мобильные устройства

Читать полностью »

При оптимизации времени выполнения алгоритма, использующего LDPC декодер, профайлер привел к функции, вычисляющей следующее значение:
image
где a и b — целые числа. Количество вызовов шло на миллионы, а реализация ее была достаточно Читать полностью »

Мы проверили заголовочные файлы, входящие в состав Embarcadero C++Builder XE3. Фактически, это означает только проверку небольшого числа inline-функций. Соответственно найдено совсем немного подозрительных мест, но достаточно для небольшой заметки.
Читать полностью »

Марафонские задачки по С++Приветствую всех!

В этом посте мы обсудим решение нескольких задачек, которые я подсмотрел из «Марафон задач по С++» (мне кажется ссылки легко найдутся поисковиком). Нет, к сайту я решительно никакого отношения не имею, однако узнал о нем с хабра: либо был у кого-то в профиле, либо была ссылка в комментариях. Итак, определимся с задачками, решения которых будут рассматриваться (задачек всего 9, но эти показались мне интересными):

  • Забыл, как умножать. Помогите!
    Умножить число на 7, не используя операцию умножения.
  • Два в одном.
    Какой-то умник поменял местами кнопки в лифте. Поставил вместо первого этажа второй, а вместо второго – первый. Честное слово, мне лень ковырять кнопки. Я лучше перепрограммирую лифт. Но программировать мне тоже лень. На вас вся надежда. Напишите, пожалуйста, функцию-переключатель, которая возвращает 1, если на входе 2 и 2, если на входе 1.

Читать полностью »

JetBrains готовит к выпуску С++ IDE Я не являюсь представителем компании JetBrains и вообще никак с ней не связан, но не смог пройти мимо на мой взгляд очень многообещающей новости. На днях JetBrains объявили о планах выпустить C++ IDE на базе AppCode для Objective-C. Эта новость была крайне вскользь упомянута и вероятно большинство (как и я) попросту не заметили её под столь скушным названием. Но поскольку качественных и высокофункциональных IDE для С++ — кот наплакал, то подобная новость от JetBrains просто не может не радовать и должна быть быть озвучена отдельно.

Поскольку продукты этой компании хорошо зарекомендовали себя для таких языков каr Java, Python, Ruby, C#, Objective-C и практически все, кто пользовался их продуктами, сходятся во мнении — продукты очень качественные и высоко функциональные, поэтому можно ожидать, что C++ IDE их производства будет таким же прекрасным продуктом.

Многие засомневались в реальности этой новости из-за даты её публикации — 1 апреля, поэтому компания подтвердила у себя в блоге — это не первоапрельская шутка.

AppCode для Objective-C на текущий момент работает только под Mac OS, но новая С++ IDE уже объявлена кроссплатформенной и заявлена поддержка трёх основных платформ: Windows, Mac OS и Linux. На странице посвящённой грядущей IDE можно найти краткое описание того, какой функционал перекочует из AppCode и что нового будет добавлено в будущую IDE, чтобы она была наиболее удобна при работе с C++ проектами.
Читать полностью »

На хабре уже было несколько статей про lock-free алгоритмы. Этот пост — это перевод статьи моего коллеги, которую мы планируем публиковать в нашем корпоративном блоге. По роду деятельности мы пишем огромное количество lock-free алгоритмов и структур данных, и этой статьей хочется показать, насколько это интересно и сложно одновременно.

Эта статья во многом похожа на эту статью, но в той статье рассматриваются не все проблемы, с которыми можно столкнуться, разрабатывая lock-free структуры данных, и уделяется очень мало внимания решению этих проблем. В этой статье хочется детально остановиться на некоторых решениях, которые мы используем в реальной реализации lock-free структур данных в нашем продукте, и больше внимания уделить оценке производительности.
Читать полностью »

Генератор абстракций (видеообзор)

Привет!
Не для широких масс, но для любителей программирования и графики решился я опубликовать сей пост.
image
Читать полностью »

image

О чем эта статья

Сегодня я расскажу про библиотеку Boost Signals — про сигналы, слоты, соединения, и как их использовать.

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

Читать полностью »

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

Ниже представлен «проект NULL», тот самый костяк, с которого обычно все и начинается. У меня.

Данный пост скорее всего не будет интересен тем кто уже матерый и тем кто на прямую не связан с разработкой на С++, т.к. ниже представленные материл несет одну единственную цель — дать готовый фундамент для начала.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js