Метка «c++» - 86

Здравствуйте!

Оптимизировал я однажды критический участок кода, и был там boost::shared_ptr… И понял я: не верю я библиотекам, хоть и пишут их дядьки умные.

Детали под катом.

Так вот, оптимизировал я код, и был там такой участок:

auto pRes = boost::static_pointer_cast< TBase >( boost::allocate_shared< TDerived >( TAllocator() ) );
<fontЧитать полностью »


Вместо введения

Добрый день, Читатели.
Хотел бы поделиться со всеми моим скромным опытом выбора языка программирования для своих проектов. Сразу хочу подчеркнуть – я выбирал язык исходя из собственных нужд, и, вполне вероятно, что ваш выбор в аналогичных условиях может быть другим. Все же я искренне надеюсь, что эта статья будет полезной, так как в ней достаточно подробно и аргументировано проводится сравнение D с C++ и C#, а так же упоминаются свыше десяти различных языков, принадлежащих к различным классам и реализующих различные парадигмы. Сам D разрабатывается как высокоуровневый язык для системного и прикладногоЧитать полностью »


Для кого эта статья

Вряд ли опытные C++ разработчики найдут что-нибудь новое и интересное в этой статье. Максимум банальную команду
gcc -c -x c++ -I ./ */*/*/*/*.h
которую они и так знают.
А вот если Вы — разработчик начинающий, или только в первый раз строите документацию по своему проекту, или пробовали это однажды, но увидев тот бред, что сгенерировал doxygen, удалили его и забыли как страшный сон, добро пожаловать под кат, скорее всего Вы найдете дальше парочку полезных мыслей.

Введение

Программирование на языке C++ — это в первую очередь анализ существующего кода.
Вот уже несколько лет я принимаю участие вЧитать полностью »

.NET / [Из песочницы] Сравнение библиотек для архивации в .Net
Недавно для моего проекта понадобилась мне библиотека для архивирования. С полгода назад по работе я пользовался библиотекой zlibnet и впечатления остались не очень приятные, так что решил поискать альтернативу. После недолгих поисков наткнулся на обзор библиотек для архивации, которая и сподвигла меня написать этот обзор.
Участники
Я буду тестировать четыре библиотеки: ZLibNet, #ZipLib, DotNetZip и ZipStorer. Теперь о каждой поподробней:
ZLibNet
Лицензия: СвободнаяРазмер: 35 кБ + 137 кБ(ZLib)
Эта библиотека представляет собой обёртку над широко известной сишной библиотекой ZLib. Так как большую часть составляет unmanaged код, тоЧитать полностью »

Qt Software / Портирование игры на Nokia N9
В этой статье речь пойдет о портировании игры Forest Tower Defense на телефон Nokia N9.
Я хорошо знаком с Qt, но плохо с QML, к счастью мне полностью удалось избежать его использования в приложении (да, это возможно!). Весь код в этой статье будет на C++, олдфаги одобряют.
Окно

Главное и единственное окно игры — это QGLWidget
class Widget : public QGLWidget, public Platform
{
Q_OBJECT
//...

Что такое Platform, и как проектировать кросплатформенные игры, можно почитать тут.
Графика

Все рисование происходит в QWidget::paintEvent
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
m_painter = &painter;

Application::instance().render();

flushFragments();
}

Хочу поделитьсяЧитать полностью »

C++ / Тонкости реализации кода библиотеки. Часть вторая
В предыдущей части был приведен способ, с помощью которого, можно сократить количество кода при использовании классов-помощников и классов из других пространств имен.
В данной статье речь пойдет о том, как можно реализовать размещение элементов библиотеки по файлам. Также будут затронуты вопросы подключения элементов библиотеки в пользовательском коде, и, конечно же, как «рабочие» пространства имен могут помочь в реализации библиотеки.
Подходы, применяемые при организации файлов библиотеки

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

в 5:18, , рубрики: c++, gcc, метки: ,

C++ / GCC Profile-guided optimization
Profile-guided optimization (далее PGO) — техника оптимизации программы компилятором, нацеленная на увеличение производительности выполнения программы. В отличии от традиционных способов оптимизации анализирующих исключительно исходные коды, PGO использует результаты измерений тестовых запусков оптимизируемой программы для генерации оптимального кода. Тестовые запуски выявляют какие части программы исполняются чаще, а какие реже. Преимущество такого подхода в том что компилятор не строит предположений при выборе способа оптимизации, а базируется на реальных данных, собранных во время выполнения программы. Необходимо учитывать то, что тестовыеЧитать полностью »

Недавно пришлось мне разбираться с одним Open Source проектом. Нужно было разобраться с одной ошибкой. Ошибка была плавающей и проявлялась исключительно на стенде, после получаса раб. Да и то не всегда. Поэтому было принято решение логировать определенные участки кода.
Поэтому была написана простая функция:
void dbg(const char * AMsg);
которая записывала строку в лог. Вскоре оказалось, что такой функции недостаточно и она была переписана в таком виде:
void dbg(const char * AFmt, ...);
т.е. теперь она при помощи функции vfprintf() записывала в файл форматированную строку. По мере роста числа вызовов, захотелось писать в файл еще два параметра, а именно __LINE__ и __FILE__.Читать полностью »

Windows Phone / [Из песочницы] Разрабатываем «Домашний бюджет». Часть 1
Данная статья является первой частью потенциальной серии, в которой будет описан процесс создания приложения для удобного ведения домашнего бюджета на WP7 с самого начала. При этом в разработке будут использованы разнообразные API и возможности платформы с целью максимального их охвата. В тоже время программа будет абсолютно юзабельной (как минимум один постоянный юзер у неё будет), и мусора используемого исключительно в академических целях не будет.
Выбор типа приложения связан с тем, что первая купленная мной программа в marketplace была именно бюджетилкой но некоторых полезных функций (например автоматического бекапа на SkyDrive и т.п.) вЧитать полностью »

Алгоритмы / [Из песочницы] Алгоритм Ляна-Кнута для расстановки мягких переносов
При работе с текстом часто возникает потребность корректно расставить переносы. Задача на первый взгляд не такая уж очевидная, нужно учитывать особенности каждого языка, чтобы решить, в каком месте разорвать слово. Как правильно формализовать такие требования, и как потом применить их в алгоритме? Одно из самых распространенных на сей день решений предложил Франклин Марк Лян, студент известного профессора Дональда Кнута. Алгоритм так и называется – «Алгоритм Ляна-Кнута», он применяется в издательской системе TeX, автор которой опять же Д. Кнут.
Алгоритм основан на сравнении исходного слова с набором правил (шаблонов). Чем большеЧитать полностью »


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