Компилятор C, создающий легкие исполняемые файлы - PullRequest
2 голосов
/ 10 апреля 2010

В настоящее время я использую MSVC для C ++, но, поскольку я переключаюсь на C, чтобы написать программу с очень высокой производительностью (интерпретатор), мне приходится искать подходящий компилятор C.

Я посмотрел некоторые двоичные файлы, созданные Turbo-C, и даже если они старые, они кажутся довольно простыми и оптимизированными.

Сейчас я не знаю, какой лучший компилятор для создания интерпретатора, но, возможно, вы мне поможете. Я рассматривал GCC, но так как я мало что знаю об этом, я не могу быть действительно уверен.

Ответы [ 5 ]

5 голосов
/ 10 апреля 2010

99,9% производительность программ зависит от кода, который вы пишете, и языка, который вы выбираете. Вы можете спокойно игнорировать производительность компилятора.

Придерживайтесь MSVC ... и не тратьте время :)

3 голосов
/ 10 апреля 2010

На вашем месте я бы стал меньше беспокоиться о компиляторе и больше беспокоиться о вашем собственном коде. Напишите код для переводчика разумным способом. Затем профилируйте его и оптимизируйте места в зависимости от того, сколько времени они занимают. Это с большей вероятностью даст выигрыш в производительности, чем использование определенного компилятора.

1 голос
/ 10 апреля 2010

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

Например, при использовании C ++ с MFC, базовым приложением Windows, которое запускалось с размера около 900 КБ и быстро росло. Связывание с динамическими библиотеками MFC снизило бы до нескольких сотен кБ. Но благодаря полному удалению MFC - непосредственно с использованием API-интерфейсов Win32 - и использованию минимальной среды выполнения C было достаточно легко реализовать то же самое в .exe размером около 25 КБ или менее (IIRC - с тех пор, как я это сделал, прошло много времени).

Так что отбросьте библиотеки и вернитесь к должному низкому уровню C (или даже C ++, если вы не используете слишком много «умных» функций), и вы можете легко писать очень компактные приложения.

редактировать

Я только что понял, что меня озадачило название вопроса, когда он говорил о легких приложениях, в отличие от концентрации на производительности , которая, как представляется, реальная суть вопроса. Если вам нужна производительность, то нет особой необходимости использовать C или переходить в болезненную среду разработки - просто пишите хороший, высокопроизводительный код. По сути, речь идет об использовании правильных конструкций и алгоритмов, а затем о профилировании и оптимизации результирующего кода для устранения узких мест и неэффективности. Обратите внимание, что в наши дни вы можете добиться значительных успехов, перейдя на многопоточный подход, а не просто сконцентрироваться на оптимизации исходного кода - убедитесь, что вы хорошо используете оборудование.

0 голосов
/ 10 апреля 2010

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

Я бы предложил придерживаться MSVC. Это очень приличная система. Хотя, если вы не уверены - сравните ваши варианты. Создайте одну и ту же программу с несколькими компиляторами, посмотрите на сборку, которую они производят, измерьте итоговую производительность исполняемого файла и т. Д.

0 голосов
/ 10 апреля 2010

Вы можете использовать GCC через MingW , Eclipse CDT или один из других портов Windows. Вы можете оптимизировать для размера исполняемого файла, скорости результирующего исполняемого файла или скорости компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...