Времена, когда программисты пытались выжать максимум из размера своего приложения, безвозвратно ушли. Основной причиной является существенное увеличение объемов оперативной памяти и дискового простраства на современных компьютерах. Немногие помнят, как при загрузке приложения с кассеты можно было пойти покушать. Или как можно было считать моргания дисковода, косвенно определяя размер приложения. Пожалуй, только разработчики програмного обеспечения под встраиваемые системы до сих пор заботятся о размере кода и потребляемой памяти. Могут ли таблетки и смартфоны вернуть разработчиков «назад в будущее»?
Данная статья призвана помочь разработчикам програмного обеспечения, испульзующим GCC компилятор, уменьшить размер кода своих приложений. Все данные в статье получены при помощи x86 GCC компилятора версии 4.7.2 на операционной система Fedora 17 для архитектуры Intel® Atom™.
Читать полностью »
Рубрика «gcc» - 10
GCC x86, как уменьшить размер кода
2013-01-29 в 12:45, admin, рубрики: gcc, GNU, x86, Блог компании Intel, Компиляторы, Программирование, размер кода, метки: gcc, GNU, x86, размер кодаОптимальные опции для x86 GCC
2012-11-28 в 3:33, admin, рубрики: gcc, GNU, open source, x86, Блог компании Intel, Компиляторы, производительность, метки: gcc, GNU, open source, x86, производительностьРаспространено мнение, что GCC отстает по производительности от других компиляторов. В этой статье мы постараемся разобраться, какие базовые оптимизации GCC компилятора стоит применить для достижения приемлемой производительности.
Настройка Visual Studio 2010 для компиляции при помощи gcc по ssh
2012-09-18 в 13:00, admin, рубрики: debugging, gcc, linux, ssh, Visual Studio, Блог компании НеоБИТ, метки: debugging, gcc, ssh, Visual Studio Ни для кого не секрет, что Microsoft Visual Studio 2010 представляет собой мощную IDE, которая, помимо всего, позволяет заменять команды сборки проекта проектов путем нескольких изменений в .vcxproj файлах. Как выяснилось, можно использовать эту возможность для того, чтобы заставить Visual Studio собирать проекты с использованием gcc, работающем на другом компьютере под управлением Linux. Естественно при этом обращение к gcc на Linux должно происходить по сети, в частности по ssh. В этой статье мы расскажем вам о своем эксперименте по такой необычной настройке Visual Studio.
Предположим, у нас есть программа:
Читать полностью »
Реализация синглтона в многопоточном приложении
2012-08-27 в 6:24, admin, рубрики: c++, gcc, MSVC, Компиляторы, многопоточность, Программирование, метки: c++, gcc, MSVC, компиляторы, многопоточность, Программирование
Введение
В настоящий момент сложно себе представить программное обеспечение, работающее в одном потоке. Конечно, существует ряд простых задач, для которых один поток более, чем достаточен. Однако так бывает далеко не всегда и большинство задач средней или высокой сложности так или иначе используют многопоточность. В этой статье я буду говорить об использовании синглтонов в многопоточной среде. Несмотря на кажущуюся простоту эта тема содержит множество нюансов и интересных вопросов, поэтому считаю, что она заслуживает отдельной статьи. Здесь не будет затрагиваться обсуждение того, зачем использовать синглтоны, а также как их правильно использовать. Для прояснения этих вопросов я рекомендую обратиться к моим предыдущим статьям, посвященным разным вопросам, связанным с синглтонами [1], [2], [3]. В этой статье речь будет идти о влиянии многопоточности на реализацию синглтонов и обсуждению вопросов, которые всплывают при разработке.
Читать полностью »
Максимально точное измерение кода
2012-08-04 в 9:49, admin, рубрики: amd, benchmark, c++, gcc, intel, оптимизация кода, метки: amd, benchmark, c++, gcc, intel, ассемблер, оптимизация кода
В моей статье полугодичной давности о длинной арифметике есть замеры скорости (throughput в тактах) очень коротких фрагментов кода — всего по несколько инструкций. Методика измерения была кривовата, но давала правдоподобные результаты. Потом выяснилось, что результаты таки неверные — поверхностный подход всегда сказывается.
В этом посте я опишу надежный метод «нанобенчмаркинга» с минимальной погрешностью и без подключения специальных библиотек и драйверов, к которому в итоге пришел. Применимость: сравнение однопоточного потенциала процессоров, просто интерес.Читать полностью »
Отладка Objective-C ARC retain
2012-07-19 в 9:54, admin, рубрики: clang, gcc, iOS, objective-c, отладка, разработка под iOS, метки: clang, gcc, iOS, objective-cИногда возникают ситуации, когда стандартных средств отладки недостаточно.
Например, в iOS 4.1 была возможность использовать valgrind в симуляторе. А в Lion x86_64 и iOS 5 valgrind работать уже перестал.
Это связано с 64-битной архитектурой и изменениями в симуляторе (в valgrind есть ряд
недоработок).
С переходом на ARC метод отладки retain исчез:
- (id) retain
{
// Break here to see who is retaining me.
return [super retain];
}
Маленькая C-функция из преисподней
2012-07-04 в 12:26, admin, рубрики: gcc, icc, LLVM, Компиляторы, переводы, Программирование, метки: c++, gcc, icc, LLVM, компиляторыНедавно мой студент и я пытались понять одну тонкость в стандарте C. Самый простой способ прояснить подобные вопросы — это узнать, учли ли её разработчики компиляторов, то есть написать код и посмотреть, что с ним будут делать разные компиляторы.
Я написал такую функцию:
int foo (char x) {
char y = x;
return ++x > y;
}
Так как ++x
увеличивает на 1 значение x
, очевидно, что функция должна возвращать "1" для большинства значений x
. Вопрос состоит в том, что она вернет для значения CHAR_MAX?
Qt/Objective-C++11 или сборка Qt-проекта с помощью GCC-4.7 и Clang
2012-05-28 в 15:32, admin, рубрики: blocks, c++, clang, gcc, mac os x, macosx, programming, qt, Qt Software, Программирование, метки: blocks, c++, clang, gcc, macosx, objective-c, programming, Qt Всем доброго хабрадня!
Сегодня я расскажу уважаемым хабражителям об очередном извращении — о сборке проекта, написанного на Qt, под Mac OS X компилятором GCC-4.7.0 с примесью Clang'а (про шланг — в конце статьи, там станет понятно, зачем ещё и его приплетать будем).
Для чего нам GCC 4.7? Ну, например, чтобы использовать все те крутые фичи из стандарта C++11. Разве этого мало? Кроме поддержки нового стандарта, в нём очень много улучшений по сравнению с идущим в комплекте с Xcode GCC 4.2 (хотя он и оказывается на поверку i686-apple-darwin11-llvm-g++-4.2), так что смысл в переходе на 4.7 явно имеется. Но и проблемы присутствуют, о чём ниже.
Мы можем предположить, что нам потребуются некие фичи из Cocoa
, а значит, нам потребуется компилятор Objcetive-C, а ещё лучше — Objective-C++, чтобы, например, интегрировать наше Qt-приложение в окружение Mac OS X.
Читать полностью »
Релиз GCC-4.7
2012-03-23 в 7:47, admin, рубрики: c++, c++11, gcc, open source, Компиляторы, метки: c++11, gcc, open sourceСегодня ночью вышел долгожданный GCC 4.7, выпуск которого приурочен к 25-летию проекта.
Долгожданным этот выпуск является прежде всего для программистов C++, так как несет с собой обширную поддержку нового стандарта С++11.
Читать полностью »
Вышла версия Xcode 4.3.2
2012-03-22 в 7:24, admin, рубрики: apple, gcc, iOS, mac os x, xcode, разработка под iOS, метки: apple, gcc, iOS, mac os x, xcode
Кратко об изменениях (из описания в AppStore):
- Включает в себя SDK для iOS 5.1 и MacOSX 10.7
- Подписывание программ с помощью Apple Developer ID
- Консольные утилиты устанавливаются из меню загрузоксм. примечания
- Instruments, File Merge и другие утилиты теперь запускаются прямо из Xcode
- Утилита миграции на ARC может преобразовывать код из retain/release и GC кода
- Багфиксы и стабильность — как уж водится
Версия для Mac OS X Lion доступна бесплатно в AppStore. Версии для Snow Leopard, видимо, не будет.
Читать полностью »