Разделяемая память в fpc (free pascal)


Действительно ли Freepascal использует * намного меньше памяти, чем gcc

Тесты языковой перестрелки в http://benchmarksgame.alioth.debian.org/ показывают, что программы FPC используют около 1/50th памяти, которая сопоставимые программы с использованием g++. Неужели эти тесты непреднамеренно благоприятствуют fpc, или это правда, что FPC намного лучше, чем g++? Я всегда рассматривал эти тесты как набор достойных микро-тестов, поэтому я удивлен этими результатами, так как коэффициент 50 раз довольно значителен ИМХО.

Edit: Это становится еще более интересным, так как эта страница утверждает, что pascal использовал только 8 КБ для некоторых программ, что кажется удивительно низким

Обратите внимание, что время запуска — это IIRC другой тест, где пики FPC

Я думаю, что ответ нужно в первую очередь искать в том, что Free Pascal статически связывает программы по умолчанию, избегая libc и других вспомогательных библиотек

Это имеет несколько последствий:

  • Для простых программ, которые тестируются, программы FPC статичны, используя только собственный RTL (без статической копии libc) и не имеют динамических связующих издержек (как во времени, так и в памяти). Включить отображение общих сегментов glibc (это так?), Которые могут быть ошибочно приняты за использование памяти приложения.
  • libc может сделать потенциально ненужным, но задействовать инициализации, которые FPC не делает для этих простых программ. (например, инициализация zoneinfo)
  • поскольку FPC использует полностью независимый диспетчер памяти, начальный блок кучного субаллокатора может иметь другой размер. Возможно, FPC систематически меньше.
  • Для потоков размер нового стека потоков может привести к различным различиям (размер и, возможно, факт, если он (частично) является только резервированием или переданной памятью, или что-то вроде эквивалента * nix)

В целом, я думаю, что это наблюдаемое поведение меньше о FPC и больше об отсутствии изменений среди других эталонных систем разработки. FPC просто выделяется, потому что почти все остальное построено на основе технологии gcc/glibc (либо потому, что они являются прямыми gcc-дериватами, либо потому, что их VM/интерпретаторы построены поверх gcc), и, таким образом, все разделяют общие рекомендации libc. FPC отличается просто подчеркивает (g?) Libc плохое масштабирование в сторону простых программ. (*)

Вероятно, перестрелка может быть смещена в том смысле, что либо общее пространство адресов считается, а фактически использовано частными байтами, или потому, что оно недостаточно различается между частными байтами, выделенными субаллокатором и частными байтами, фактически используемыми процессом. Для этого, вероятно, потребуется использовать libc/libmalloc core devel, и поскольку перестрелка является открытым исходным кодом, вопрос, если вы можете обеспечить лучшее измерение, открыт.

Либо это, либо есть что-то принципиально неправильное с (g) libc. (Я не эксперт в этом). Возможным решением для получения более релевантной информации будет запуск теста на FreeBSD или Linux с помощью uclibc. Короче всего, кроме glibc.

Как указано в сообщениях, как у Igouy post, при соединении с libc FPC получает (плохие) характеристики других систем разработки. Это еще один показатель того, что вопрос должен быть , почему glibc, использующий двоичные файлы, плохо работает в тесте памяти перестрелок «, а не» почему FPC хорошо работает в тесте перестрелок «

Обратите внимание, что FPC изначально избегал libc из-за проблем с совместимостью между дистрибутивами, а не с производительностью или размером файла.

Итак, для всех, кто предположил, что это случайность для измерения использования памяти FPC, когда-либо считалось, что это проблема использования памяти glibc или ее измерения? Вернее, что высокий номер glibc ошибочен, а не низкий номер FPC.

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

Разделяемая память в fpc (free pascal)

Полный спектр компьютерных услуг!


‘ w /> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

Собственно тема эта поднята была только по одному случаю, сейчас во многих учебных заведениях в рамках какого-либо из предметов частенько изучают Pascal, задачи, лабораторные, курсовые. И в целом, как алгоритмический язык для обучения он неплох, только вот популярные некогда IDE Turbo Pascal / Borland Pascal на современных машинах под Vista-based OS скорее всего не запустятся. Так в чем же писать спросите вы? Ставить Delphi и т.п.? Выход есть .

Free Pascal Compiler (FPC) — это свободно распространяемый компилятор языка Паскаль с открытыми исходными кодами. Он совместим с Borland Pascal 7 и Object Pascal – Delphi, но при этом обладает рядом дополнительных возможностей, например, поддерживает перегрузку операторов. FPC — кроссплатформенный инструмент, поддерживающий огромное количество платформ. Среди них — AmigaOS, DOS, Linux, *BSD, OS/2, MacOS(X) и Win32.

Однако FPC — не просто компилятор. Он имеет в своём составе великолепный набор библиотек, одной из которых является FCL, включающая в себя компоненты, совместимые с невизуальными компонентами VCL из Borland Delphi. Разработка визуальных компонент — это цель другого проекта — Lazarus. Он представляет собой среду быстрой разработки программ, аналогичную Delphi, и базируется на оригинальной кроссплатформенной библиотеке визуальных компонент LCL, также совместимых с VCL. (с) http://www.freepascal.ru/

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

Ну и парочка интересных, на мой взгляд, статей «вдогонку»:

    Основы программирования для Win32 на Free Pascal — Данная книга предназначена для того, чтобы продемонстрировать основные методы программирования для Win32-платформ, используя компилятор Free Pascal. При написании использовалась версия компилятора 1.0.10. Предполагается, что читатель знаком с Free Pascal, то есть — языком, компилятором и т.д., однако совершенно не знаком с программированием для Windows. Некоторые моменты могут показаться оскорбительно разжеванными, некоторые — пройденными слишком быстро и поверхностно — предполагается, что справкой читатель пользоваться умеет.

В статье / книги подробно рассматривается как сделать полноценное Win32 GUI приложение в FP, используя при этом только WinAPI.

  • WinAPI — диалоговые окна и элементы управления из файла ресурсов — Эта статья является дополнением к книге Основы программирования для Win32 на Free Pascal Ивана Шихалева. Иногда возникает необходимость написать небольшие оконные программки, чтобы в них было и минимум кода и минимальный размер после компиляции. Визуальные проектировщики интерфейсов, вроде Delphi или Lazarus не подходят, т.к. после них получаются бинарные файлы чудовищных размеров. Да и не секрет, что объектно-ориентированные интерфейсы слегка замедляют работу программы.
  • Разделяемая память в fpc (free pascal)

    Начнем, пожалуй, с оператора if. then. else.

    Если вы не программируете на Паскале и в обозримом будущем не собираетесь этим заниматься, то, скорее всего, все, о чем здесь пойдет речь, будет для вас малопригодным.


    Если вы уже знакомы с Free Pascal и применяете этот компилятор, разрабатывая собственные программы, то для вас, должно быть, нижеследующее повествование будет скучным.

    Для всех остальных, надеюсь, рассказ о Free Pascal окажется полезным. Не зря же говорят, что чем больше информации, тем выше уровень свободы( или энтропии. ).

    Помимо всего прочего, Free Pascal потенциально может быть интересен незрячим программистам, поскольку позволяет создавать современные и качественные программы, используя компилятор в режиме командной строки.

    Отсутствие платы за лицензию и открытость исходных кодов Free Pascal дают возможность использовать его в школах и университетах. Также Free Pascal может заинтересовать тех разработчиков, которых волнуют вопросы юридической чистоты создаваемых программных продуктов.

    Напутственное

    Разговор наш пойдет о компиляторе Free Pascal Compiler (FPC), который распространяется группой разработчиков по общественной лицензии GNU. Лицензия эта подразумевает, в частности, что для Free Pascal открыты и общедоступны исходные коды, а их распространение и модификация (при условии соблюдения лицензии) ничем не ограничены. Входящие в состав дистрибутива пакеты и библиотеки имеют лицензию LGPL (GNU Lesser Public License), что позволяет распространять скомпилированные программы на любых (в том числе и коммерческих) условиях. В дополнение к этому, Free Pascal можно получить совершенно бесплатно, то есть даром (вернее, на что вам придется раскошелиться, так это на оплату соединения через интернет для загрузки дистрибутива на свой компьютер).

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

    Примечание : все необходимые ссылки собраны в заключительном разделе этой статьи.

    К чему он пригоден.

    Читая документацию по Free Pascal, то и дело натыкаешься на слово «Delphi». Речь идет о совместимости Free Pascal с Delphi, причем это настолько завораживает, что поначалу пояснения о том, что совместимость поддерживается лишь на уровне языка программирования, не воспринимаются всерьез. Как всегда, хочется всего сразу и бесплатно. Так что если для вас программирование в среде Delphi сводится к «мышиной» возне с формами и «кидании» компонентов из одного угла экрана в другой, то, подозреваю, Free Pascal вас разочарует. Ничего подобного Free Pascal не содержит. Вернее сказать, среда быстрой разработки приложений — это другой программный продукт и, следовательно, тема для другого разговора.

    Илон Маск рекомендует:  Псевдокласс fullscreen в CSS

    Здесь же начнем с того, что Free Pascal — это 32-разрядный компилятор. Мощный, быстрый (компиляция выполняется за один проход), многоплатформенный. Он поддерживает и расширяет синтаксис промышленных стандартов языка Паскаль: Turbo Pascal 7.0 и Object Pascal (тот самый, который используется в качестве языка программирования в среде Delphi). Для Turbo Pascal декларируется почти полная совместимость, а для Delphi — совместимость с большинством версий, включая Delphi 7 (классы, rtti, исключения, ansistrings, widestrings, интерфейсы). В дистрибутиве для Apple предусмотрен режим совместимости с Mac Pascal. Кроме того, Free Pascal реализует перегрузку функций, перегрузку операторов, глобальные свойства и некоторые другие самобытные возможности.

    Free Pascal поддерживает компиляцию кода для процессоров Intel, начиная с i386, AMD64 or EMT64, PowerPC, SPARC, Intel ARM. На сегодняшний день существуют или находятся в разработке релизы Free Pascal для следующих операционных систем: Dos (с поддержкой 32-разрядных расширений), Linux, Mac OS X/Darwin, Mac OS classic, Amiga (только версия 0.99.5), Win32, os/2, FreeBSD, BeOS, Solaris , PalmOS , NetBSD, Netware, OpenBSD, MorphOS.

    Сейчас последней и рекомендуемой к использованию является версия 2.0.2, вышедшая в ноябре 2005 г. Для каждой из поддерживаемых платформ существует свой дистрибутив Free Pascal. В дальнейшем речь пойдет о пакете, предназначенном для семейства ОС Win32.

    На уровне исходного кода приложения, разработанные при помощи Free Pascal, являются переносимыми (портируемыми) между поддерживаемыми платформами. Степень переносимости тем выше, чем больше приложение ориентировано на использование входящих в состав Free Pascal модулей (имеются в виду модули, общие для всех поддерживаемых платформ).

    Free Class Library

    Вернемся еще раз к вопросу совместимости Free Pascal и Delphi. Полагаю, что справедливей будет говорить о легкости/трудности перехода от Delphi к Free Pascal и легкости/трудности переноса существующих исходных кодов. При таком подходе нельзя не сказать о библиотеке Free Class Library (FCL), входящей в состав дистрибутива Free Pascal. Эта библиотека содержит аналоги невизуальных компонентов Delphi. Здесь широко представлены средства доступа к различным базам данных (в том числе Interbase, mysql, ODBC и др.), средства работы с XML и средства работы с интернет. В некоторых случаях совместимость с компонентами Delphi доведена вплоть до совпадения имен классов и методов.


    Документация

    В дистрибутив Free Pascal для Win32 включена документация на английском языке, представленная в формате pdf. На сайте разработчиков также доступна он-лайн документация и архивы с документацией в формате html и в виде обычного текстового файла.

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

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

    Прибавления

    Кроме компилятора, в состав пакета входят дополнительные утилиты, призванные подсобить в разработке приложений. Среди них:

    • data2inc — преобразует произвольный файл во включаемый файл (.inc) для FPC, где соответствующие данные представлены в виде константы-массива.
    • delp — очищает папку от «временных» файлов, возникающих при компиляции.
    • fpcmake — используется для подготовки make-файлов для GNU make.
    • fpdoc — генерирует документацию из модулей Free Pascal в форматах HTML и LaTeX.
    • fpmc — компилятор msg-файлов.
    • fprcp — pascal-препроцессор для windres.
    • grep — осуществляет поиск строки по шаблону в одном или нескольких файлах.
    • h2pas и h2paspp — транслятор заголовочных файлов C и C++ в модули Pascal.
    • makeskel — утилита для подготовки скелета xml-описания для fpdoc.
    • ppdep — позволяет получить список зависимостей одного модуля от других.
    • ppudump — позволяет извлечь информацию из .ppu-файлов.
    • ppufiles — то же, что ppdep, но для .ppu-файлов.
    • ppumove — позволяет собирать библиотеки из .ppu.
    • ptop — форматирование исходников.
    • windres — компилятор ресурсов.
    • и другие.

    Интегрированная среда разработки

    Единственное, что не устроило меня во Free Pascal, это интегрированная среда разработки. Дело в том, что она малопригодна для работы незрячих программистов, поскольку реализована в виде консольного приложения. Напомню, что консольным называется такое приложение, которое не использует графический интерфейс, а работает исключительно в текстовом режиме. При этом такое приложение может быть 32-разрядным приложением Windows (а не только DOS-программой). Не секрет, что консольное окно, мягко говоря, недостаточно озвучивается скринридерами (например, Jaws for Windows). Ситуация осложняется еще и тем, что внешне среда разработки Free Pascal выглядит подобно среде разработки Turbo Pascal (то есть имеет меню, диалоги, множество окон, реализованных в текстовом режиме). Однако скринридеры, работающие под DOS, здесь тоже не помогут, так как это приложение Windows.

    С точки зрения разработчиков Free Pascal, такой подход, возможно, и оправдан: консоль есть практически во всех операционных системах, а графический интерфейс только в некоторых. Но в данном случае приходится признать, что интегрированная среда Free Pascal для незрячих недоступна.

    Впрочем, выход есть всегда . Free Pascal может выполнять компиляцию и сборку программ из командной строки. То есть вы можете для подготовки исходных текстов использовать наиболее удобный для вас текстовый редактор, который позволяет редактировать обычный текст (plain text) в кодировке ANSI, а компилировать программы можно, запуская специально подготовленный bat-файл или используя утилиту make, входящую в состав Free Pascal. Такой способ может показаться непривычным для пользователей Windows, програмирующих в среде Delphi, но для пользователей Linux — это в порядке вещей. Ниже будут приведены два примера (консольное приложение и GUI-приложение), иллюстрирующих такой подход.

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

    Проект Lazarus

    Рассуждая об «идеологической совместимости» Free Pascal и Delphi, необходимо отдать должное проекту Lazarus, в рамках которого и реализуется идеология быстрого визуального программирования.В основе проекта лежит библиотека визуальных компонентов Lazarus (LCL), для которой декларируется совместимость с визуальными компонентами VCL из Delphi. Библиотека LCL является платформонезависимой и утверждается, что исходные коды приложений могут быть портированы на любую из поддерживаемых платформ.

    Развитие проекта идет в двух направлениях: разработка и улучшение работы визуальных компонентов, входящих в LCL, и совершенствование интегрированной визуальной среды быстрой разработки приложений. Дистрибутив этой среды разработки и библиотека компонентов Lazarus не входят в состав дистрибутива Free Pascal. Если вас интересует этот проект, вы можете отыскать все необходимые файлы на сайте разработчиков.

    Установка компилятора

    Рекомендуемую для работы версию Free Pascal можно загрузить с официального сайта разработчиков. Имя загружаемого файла (версия 2.0.2 для ОС Win32): fpc-2.0.2.i386-win32.exe, размер составляет около 26 мегабайт.


    Также на официальном сайте доступны исходные коды компилятора и входящих в него пакетов. Этот материал может быть использован и как пример большого открытого проекта, и как своего рода образец стиля программирования, и как основа для собственных разработок.

    После того как вы загрузили дистрибутив, запустите программу установки Free Pascal (файл fpc-2.0.2.i386-win32.exe). Далее придется выполнить стандартную процедуру установки, то есть последовательно пройти несколько диалогов, нажимая кнопку Next (в последнем диалоге нужно будет нажать кнопку Install).

    Не рекомендуется изменять папку, в которую будет установлен компилятор (по умолчанию это C:\FPC\). Иначе (если путь к этой папке будет слишком длинным) возможны ошибки при компиляции.

    Рекомендуемый тип установки (если позволяет размер свободного места на диске) — Full installation (Установка полного пакета). Также доступны — Minimum installation (Установка минимально необходимых файлов) и Custom installation (Выборочная установка). Полная установка займет на диске 101 мегабайт. При выборочной установке можно отказаться, например, от интегрированной среды разработки.

    Первые программы

    Командный файл

    Для компиляции простых примеров и небольших программ вполне подойдет bat-файл, который должен располагаться в той же папке, где и файл с исходным кодом. Для консольного приложения он может иметь следующий вид(предполагается, что компилятор установлен в папку C:\FPC\):

    В результате выполнения такого файла в текущей папке появятся три файла: объектный (с расширением .o), исполняемый (.exe) и файл, содержащий отчет о компиляции и сообщения об ошибках (errlog.txt). Разумеется, что объектный и исполняемый файлы появятся лишь в том случае, если при компиляции не было ошибок.

    Аналогичный bat-файл для GUI-приложения дополнительно будет содержать командную строку для вызова компилятора ресурсов. Компилятор ресурсов входит в дистрибутив Free Pascal.

    Консольное приложение

    По заведенному порядку следовало бы в качестве первой консольной программы предложить четырехстишие, выводящее на экран строку «Hello, world!». Немного отступим от этого порядка и, кроме вывода текста на экран, проиллюстрируем работу с функциями Win32 API (в данном случае GetVersionInfo).

    Поместите нижеследующий текст программы в текстовый файл с hello.pas. В той же папке создайте bat-файл для компиляции консольного приложения. Запустите этот bat-файл. Если во время компиляции ошибок не было, то в папке появятся файлы hello.o, hello.exe и errlog.txt. В противном случае вы увидите только файл errlog.txt (просмотрите его и устраните ошибки).

    Запустите файл hello.exe. На экран будет выведено сообщение о версии ОС Windows, установленной на вашем компьютере. Если вы используете Jaws for Windows, то прочитать содержимое окна можно при помощи Jaws-курсора. Нажмите клавишу Enter, чтобы закрыть окно приложения.

    Илон Маск рекомендует:  Электронный сомелье

    GUI-приложение

    Если вы изучаете Win32 API и системное программирование в ОС Windows, но при этом не хотели бы переходить с Паскаля на Си, то Free Pascal — это вполне приемлемое решение. Практически любой пример, приводимый в справочниках по Win32 API, можно реализовать на Free Pascal путем замены конструкций языка Си на аналогичные конструкции языка Паскаль.

    В качестве примера ниже приведен исходный код простого GUI-приложения, которое описывает и регистрирует класс окна, создает окно и запускает цикл обработки сообщений. Окно приложения содержит горизонтальную полоску меню: Файл и О программе. При выборе в меню Файл пункта Открыть появляется стандартный диалог открытия файла. Пользователь может выбрать только файлы с расширением .wav. После того как файл будет выбран, он будет воспроизведен при помощи системной функции PlaySound (). Чтобы сделать пример попроще, в нем не обрабатывается сообщение о перерисовке окна.

    При создании GUI-приложения необходимо указать компилятору тип приложения (по умолчанию подразумевается консольное). Это делается дериктивой


    Если необходимо добавить к приложению файл ресурсов (в данном случае ресурсом является меню программы), то следует воспользоваться директивой

    Free Pascal

    Основы программирования
    Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее.

    Free Pascal – это 32 и 64-битный компилятор языка Паскаль. Текущая версия (2.2) может компилировать код для следующих процессоров:

    • Intel i386 и выше (i486, семейство Pentium и выше)
    • AMD64/x86_64
    • PowerPC
    • PowerPC64
    • SPARC
    • ARM
    • Процессор m68K поддерживается старшими версиями

    Компилятор и библиотека времени выполнения (RTL – Run-Time Library) доступны для следующих операционных систем:

    • DOS
    • LINUX
    • AMIGA (только версия 0.99.5)
    • WINDOWS
    • Mac OS X
    • OS/2 (при использовании дополнительного пакета EMX, это также справедливо для DOS/Windows)
    • FREEBSD
    • BEOS
    • SOLARIS
    • NETBSD
    • NETWARE
    • OPENBSD
    • MorphOS
    • Symbian

    Полный список всех версий доступен на сайте Free Pascal.

    Насколько это возможно, Free Pascal был разработан максимально совместимым с Turbo Pascal 7.0 и Delphi 7 (несмотря на это, совместимость не является основной целью), но он также расширяет возможности этих языков благодаря таким элементам, как перегрузка операций. И, в отличие от своих прототипов, Free Pascal поддерживает множество платформ, то есть является кросс-платформенным.

    Он также отличается тем, что вы не можете использовать модули, откомпилированные на одной системе в других системах, то есть вы не можете использовать откомпилированные модули Турбо Паскаль.

    Также имеется текстовая версия Интегрированной Среды Разработки (Integrated Development Environment – IDE), доступная для Free Pascal. Пользователи, предпочитающие визуальную среду разработки, могут использовать Lazarus или MSIDE.

    Free Pascal состоит из нескольких частей:

    1. Компилятор.
    2. Библиотека времени выполнения (RTL – Run-Time Library).
    3. Пакеты. Это коллекция множества полезных модулей, основанных в целом на Windows 32 API и интерфейсе GTK-2.
    4. Бесплатная библиотека компонентов (Free Component Library – FCL). Это набор основанных на классах полезных моделей, которые позволяют получить доступ к базам данных, обеспечивают поддержку изображений, Интернета, XML и т.п.
    5. Полезные программы и модули.

    Для работы с компилятором вам необходимы только первые две части. В этом документе описано использование компилятора и утилит. Язык программирования Паскаль описан в документе «Справочные материалы», а доступные процедуры и модули RTL и FCL описаны в соответствующих справочных руководствах.

    Свободный паскаль: компилятор fpc

    Диалект Паскаля, который лежит в основе компилятора fpc, практически совпадает со стандартом Object Pascal, который использовался в Delphi 7 (он же «язык Delphi»). Компилятор может работать в различных режимах совместимости, эмулируя поведение компиляторов Turbo Pascal 7.0 (опция -Mtp), Delphi 7 (-Mdelphi) или Macintosh Pascal (-Mmacpas). Имеется также собственный диалект Free Pascal (очень похожий на Turbo Pascal — опция -Mfpc) и комбинированный режим Free Pascal + Object Pascal (-Mobjfpc), который используется чаще всего. Компилятор может генерировать как 32-, так и 64-битный код.

    Возможности оптимизации в fpc достаточно скромны по сравнению с компиляторами GCC. Тем не менее доступны четыре уровня оптимизации по скорости (от -O- до -O3, где режим -О- означает отсутствие оптимизации и аналогичен -О0 в GCC) и оптимизация по размеру кода. Оптимизация для конкретной процессорной архитектуры ограничивается различными видами процессоров Pentium и наборами инструкций SSE, SSE2 и SSE3. Доступны также развертывание циклов (loop unrolling) и некоторые другие оптимизации (fpc -i показывает полный список).

    Freepascal действительно использует *намного * меньше памяти, чем gcc

    языковые показатели перестрелки на http://benchmarksgame.alioth.debian.org/ укажите, что программы FPC используют о 1/50й памяти, которую используют сопоставимые программы, использующие g++. Делают ли эти критерии непреднамеренно пользу fpc или это действительно правда, что FPC этой намного лучше, чем G++? Я всегда рассматривал эти критерии как набор достойных микро-критериев, поэтому я удивлен этими результатами, так как фактор 50 раз довольно значительный ИМХО.


    Edit: Это становится еще более интересным, так как этой страница утверждает, что Паскаль использовал только 8KB для некоторых программ, что кажется удивительно низким

    2 ответов

    обратите внимание, что время запуска является еще одним эталоном IIRC, где FPC пики

    Я думаю, что ответ следует искать в первую очередь в том, что Free Pascal статически связывает программы по умолчанию, избегая libc и других вспомогательных библиотек

    Это имеет несколько последствий:

    • для простых программ, которые подвергаются бенчмаркингу, программы FPC статичны, используя только собственный RTL (без статической копии libc) и не имеют динамических накладных расходов (как во времени и память). Включая отображение общих сегментов glibc (это так?) это может быть ошибочно принято за использование памяти приложения.
    • libc может делать потенциально ненужные, но связанные инициализации, которые FPC не делает для этих простых программ. (например, инициализация zoneinfo)
    • С ФПК использует полностью независимый менеджер памяти, первый блок подраспределитель кучи может иметь различный размер. Возможно, FPC систематически меньше.
    • для потоков, размер стек нового потока может вызвать различные различия (размер и, возможно, тот факт, что он (частично) является только резервированием или фиксированной памятью или любым эквивалентом *nix)

    в целом, я думаю, что это наблюдаемое поведение меньше о FPC, и больше о недостатке вариации среди других эталонных систем разработки . FPC просто выделяется, потому что почти все остальное построено поверх технологии gcc/glibc (либо потому, что они являются прямым производным gcc или потому, что их VM/интерпретаторы построены поверх gcc), и, таким образом, все разделяют общие трактовки libc. FPC отличается просто подчеркивает (g?) плохое масштабирование libc в сторону простых программ. (*)

    перестрелка, вероятно, может быть предвзятой в том смысле, что либо общее пространство адресов подсчитывается, а не на самом деле используется частные байты или потому, что он недостаточно различает частные байты, выделенные субаллокатором и частными байты, фактически используемые процессом. Вероятно, потребуется libc / libmalloc core devel, чтобы разобраться в этом, и поскольку перестрелка с открытым исходным кодом, вопрос, Можете ли вы обеспечить лучшее измерение, открыт.

    либо это, либо есть что-то принципиально неправильное с (g)libc. (Я не эксперт в этом). Возможным решением для получения более релевантной информации было бы запустить бенчмарк на FreeBSD или Linux с uclibc. Короче ничего, кроме в glibc.

    Как говорится в сообщении Igouy, при подключении к libc FPC получает (плохие) характеристики других систем разработки. Это еще один показатель того, что вопрос должен быть «почему glibc с помощью двоичных файлов плохо работает в тесте памяти перестрелки» а не «почему FPC хорошо работает в тесте перестрелки»

    обратите внимание, что FPC первоначально избегал libc из-за проблем совместимости с перекрестным распространением, а не производительности или размер файла.

    Итак, для всех, кто предполагает, что это случайность wrt для измерения использования памяти FPC, когда-либо считалось, что это проблема с использованием памяти glibc или ее измерением? Или, скорее, что высокий номер glibc неправильный, а не низкий номер FPC.

    . В ФПК разработчиков .

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

    Да, это действительно так что утилита unix top сообщает, что эти программы Pascal используют столько памяти, а эти программы C++ используют столько памяти.

    например, на x64, в то время как бесплатная программа Pascal n-body и А C++ n-body program запускается, top сообщает об этих измерениях —


    использование памяти top отчеты для бесплатных программ Pascal is использование памяти, что тесты игры отчеты для бесплатных программ Pascal.

    мы можем видеть 2 разных случая:

    обе программы Pascal и C++ используют несколько MBs и использование памяти очень похоже, отличается менее чем на

    2x. Когда дополнительная память выделенные для решения задачи, не большая разница между программы.

    программы C++ используют несколько сотен КБ, а программа Pascal использует несколько КБ. Если для решения задачи не выделяется дополнительная память, Программы Pascal используют на несколько сотен КБ меньше.

    в вопросе представлены 2 альтернативы, но обычно есть третья альтернатива —Я не понял, что происходит?

    тот факт, что C++ программа Мандельброта могла использовать 4000x больше памяти, чем программа Паскаля Мандельброта была слишком большой для OP, чтобы поверить,это казалось невозможным для OP

    Работа с ASM в FPC

    Есть ассемблер код для Borland Turbo Pascal:

    Эти процедуры используются для скрытия и показа курсора. При попытке компиляции программы, которая использует вышеприведенный код, в компиляторе FreePascal – возникает куча ошибок. Как я понял, для внедрения кода asm в FreePascal используются некоторые особенности. Помогите адаптировать код для работы в FreePascal.
    Пы.Сы.: Сори что беспокою столь древним программированием, решить задачу оч. нуна.

    Илон Маск рекомендует:  Что такое код domelement >get_elements_by_tagname

    1 ответ 1

    Согласно документации (http://freepascal.ru/article/freepascal/20050418171713/) Вам и нужно писать <$ASMMODE intel>т.к. по умолчанию используется AT&T синтаксис как в GNU Assembler. Попробуйте заменить intel на direct. Вот описание (оттуда же):

    •DIRECT — означает, что asm-вставка будет напрямую копироваться в промежуточный asm-код. Данный вариант может быть полезен при использовании совместно с директивой <$OUTPUT_FORMAT . >, дабы во вставке использовать все возможности внешнего ассемблера.

    Free Pascal

    Основы программирования
    Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее.

    Free Pascal – это 32 и 64-битный компилятор языка Паскаль. Текущая версия (2.2) может компилировать код для следующих процессоров:

    • Intel i386 и выше (i486, семейство Pentium и выше)
    • AMD64/x86_64
    • PowerPC
    • PowerPC64
    • SPARC
    • ARM
    • Процессор m68K поддерживается старшими версиями


    Компилятор и библиотека времени выполнения (RTL – Run-Time Library) доступны для следующих операционных систем:

    • DOS
    • LINUX
    • AMIGA (только версия 0.99.5)
    • WINDOWS
    • Mac OS X
    • OS/2 (при использовании дополнительного пакета EMX, это также справедливо для DOS/Windows)
    • FREEBSD
    • BEOS
    • SOLARIS
    • NETBSD
    • NETWARE
    • OPENBSD
    • MorphOS
    • Symbian

    Полный список всех версий доступен на сайте Free Pascal.

    Насколько это возможно, Free Pascal был разработан максимально совместимым с Turbo Pascal 7.0 и Delphi 7 (несмотря на это, совместимость не является основной целью), но он также расширяет возможности этих языков благодаря таким элементам, как перегрузка операций. И, в отличие от своих прототипов, Free Pascal поддерживает множество платформ, то есть является кросс-платформенным.

    Он также отличается тем, что вы не можете использовать модули, откомпилированные на одной системе в других системах, то есть вы не можете использовать откомпилированные модули Турбо Паскаль.

    Также имеется текстовая версия Интегрированной Среды Разработки (Integrated Development Environment – IDE), доступная для Free Pascal. Пользователи, предпочитающие визуальную среду разработки, могут использовать Lazarus или MSIDE.

    Free Pascal состоит из нескольких частей:

    1. Компилятор.
    2. Библиотека времени выполнения (RTL – Run-Time Library).
    3. Пакеты. Это коллекция множества полезных модулей, основанных в целом на Windows 32 API и интерфейсе GTK-2.
    4. Бесплатная библиотека компонентов (Free Component Library – FCL). Это набор основанных на классах полезных моделей, которые позволяют получить доступ к базам данных, обеспечивают поддержку изображений, Интернета, XML и т.п.
    5. Полезные программы и модули.

    Для работы с компилятором вам необходимы только первые две части. В этом документе описано использование компилятора и утилит. Язык программирования Паскаль описан в документе «Справочные материалы», а доступные процедуры и модули RTL и FCL описаны в соответствующих справочных руководствах.

    Действительно ли Freepascal использует * намного меньше памяти, чем gcc

    Тесты языковой перестрелки в http://benchmarksgame.alioth.debian.org/ показывают, что программы FPC используют около 1/50th памяти, которая сопоставимые программы с использованием g++. Неужели эти тесты непреднамеренно благоприятствуют fpc, или это правда, что FPC намного лучше, чем g++? Я всегда рассматривал эти тесты как набор достойных микро-тестов, поэтому я удивлен этими результатами, так как коэффициент 50 раз довольно значителен ИМХО.

    Edit: Это становится еще более интересным, так как эта страница утверждает, что pascal использовал только 8 КБ для некоторых программ, что кажется удивительно низким

    Обратите внимание, что время запуска — это IIRC другой тест, где пики FPC

    Я думаю, что ответ нужно в первую очередь искать в том, что Free Pascal статически связывает программы по умолчанию, избегая libc и других вспомогательных библиотек

    Это имеет несколько последствий:

    • Для простых программ, которые тестируются, программы FPC статичны, используя только собственный RTL (без статической копии libc) и не имеют динамических связующих издержек (как во времени, так и в памяти). Включить отображение общих сегментов glibc (это так?), Которые могут быть ошибочно приняты за использование памяти приложения.
    • libc может сделать потенциально ненужным, но задействовать инициализации, которые FPC не делает для этих простых программ. (например, инициализация zoneinfo)
    • поскольку FPC использует полностью независимый диспетчер памяти, начальный блок кучного субаллокатора может иметь другой размер. Возможно, FPC систематически меньше.
    • Для потоков размер нового стека потоков может привести к различным различиям (размер и, возможно, факт, если он (частично) является только резервированием или переданной памятью, или что-то вроде эквивалента * nix)

    В целом, я думаю, что это наблюдаемое поведение меньше о FPC и больше об отсутствии изменений среди других эталонных систем разработки. FPC просто выделяется, потому что почти все остальное построено на основе технологии gcc/glibc (либо потому, что они являются прямыми gcc-дериватами, либо потому, что их VM/интерпретаторы построены поверх gcc), и, таким образом, все разделяют общие рекомендации libc. FPC отличается просто подчеркивает (g?) Libc плохое масштабирование в сторону простых программ. (*)

    Вероятно, перестрелка может быть смещена в том смысле, что либо общее пространство адресов считается, а фактически использовано частными байтами, или потому, что оно недостаточно различается между частными байтами, выделенными субаллокатором и частными байтами, фактически используемыми процессом. Для этого, вероятно, потребуется использовать libc/libmalloc core devel, и поскольку перестрелка является открытым исходным кодом, вопрос, если вы можете обеспечить лучшее измерение, открыт.


    Либо это, либо есть что-то принципиально неправильное с (g) libc. (Я не эксперт в этом). Возможным решением для получения более релевантной информации будет запуск теста на FreeBSD или Linux с помощью uclibc. Короче всего, кроме glibc.

    Как указано в сообщениях, как у Igouy post, при соединении с libc FPC получает (плохие) характеристики других систем разработки. Это еще один показатель того, что вопрос должен быть , почему glibc, использующий двоичные файлы, плохо работает в тесте памяти перестрелок «, а не» почему FPC хорошо работает в тесте перестрелок «

    Обратите внимание, что FPC изначально избегал libc из-за проблем с совместимостью между дистрибутивами, а не с производительностью или размером файла.

    Итак, для всех, кто предположил, что это случайность для измерения использования памяти FPC, когда-либо считалось, что это проблема использования памяти glibc или ее измерения? Вернее, что высокий номер glibc ошибочен, а не низкий номер FPC.

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

    Разделяемая память в fpc (free pascal)

    Полный спектр компьютерных услуг!

    ‘ w /> Внимание!

    • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.

    Группа: Главные администраторы
    Сообщений: 14349
    Регистрация: 12.10.2007
    Из: Twilight Zone
    Пользователь №: 1

    Собственно тема эта поднята была только по одному случаю, сейчас во многих учебных заведениях в рамках какого-либо из предметов частенько изучают Pascal, задачи, лабораторные, курсовые. И в целом, как алгоритмический язык для обучения он неплох, только вот популярные некогда IDE Turbo Pascal / Borland Pascal на современных машинах под Vista-based OS скорее всего не запустятся. Так в чем же писать спросите вы? Ставить Delphi и т.п.? Выход есть .

    Free Pascal Compiler (FPC) — это свободно распространяемый компилятор языка Паскаль с открытыми исходными кодами. Он совместим с Borland Pascal 7 и Object Pascal – Delphi, но при этом обладает рядом дополнительных возможностей, например, поддерживает перегрузку операторов. FPC — кроссплатформенный инструмент, поддерживающий огромное количество платформ. Среди них — AmigaOS, DOS, Linux, *BSD, OS/2, MacOS(X) и Win32.

    Однако FPC — не просто компилятор. Он имеет в своём составе великолепный набор библиотек, одной из которых является FCL, включающая в себя компоненты, совместимые с невизуальными компонентами VCL из Borland Delphi. Разработка визуальных компонент — это цель другого проекта — Lazarus. Он представляет собой среду быстрой разработки программ, аналогичную Delphi, и базируется на оригинальной кроссплатформенной библиотеке визуальных компонент LCL, также совместимых с VCL. (с) http://www.freepascal.ru/

    Группа: Главные администраторы
    Сообщений: 14349
    Регистрация: 12.10.2007
    Из: Twilight Zone
    Пользователь №: 1

    Ну и парочка интересных, на мой взгляд, статей «вдогонку»:

      Основы программирования для Win32 на Free Pascal — Данная книга предназначена для того, чтобы продемонстрировать основные методы программирования для Win32-платформ, используя компилятор Free Pascal. При написании использовалась версия компилятора 1.0.10. Предполагается, что читатель знаком с Free Pascal, то есть — языком, компилятором и т.д., однако совершенно не знаком с программированием для Windows. Некоторые моменты могут показаться оскорбительно разжеванными, некоторые — пройденными слишком быстро и поверхностно — предполагается, что справкой читатель пользоваться умеет.

    В статье / книги подробно рассматривается как сделать полноценное Win32 GUI приложение в FP, используя при этом только WinAPI.

  • WinAPI — диалоговые окна и элементы управления из файла ресурсов — Эта статья является дополнением к книге Основы программирования для Win32 на Free Pascal Ивана Шихалева. Иногда возникает необходимость написать небольшие оконные программки, чтобы в них было и минимум кода и минимальный размер после компиляции. Визуальные проектировщики интерфейсов, вроде Delphi или Lazarus не подходят, т.к. после них получаются бинарные файлы чудовищных размеров. Да и не секрет, что объектно-ориентированные интерфейсы слегка замедляют работу программы.
  • Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL