SmartLink

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

SmartLink

Сообщение shade »

Вчера пол дня убил разбираясь почему для сборки лазаря перестало хватать памяти...
Залез в .fpc.cfg и вспомнил, что на днях добавил опции -CX и -XX, т.е. включил смартлинк.

Без -XX, но с включеной -CX лазарь собрался как обычно. Решил попробовать собрать пустую форму со смартлинком. Ждал очень долго... несколько часов, но тепрения так и не хватило. У меня 256 Мб оперативы и 1Гб свопа. Компилировал в линухе.

Вообщем у меня три вопроса:

1. Сколько оперативы нужно чтобы собрать пустую форму в лазаре? Около 1Гб видимо (256Мб моей оперативы и своп у меня перестал рости после отметки 470Мб.

2. Какой будет размер исполняемого файла пустой формы собранной со смарт линком?

3. Почему Delphi со смартлинком (включенном по умолчанию) собирает проект менее чем за 1сек, а лазарь (точнее ld, т.к. внутренний компоновщик fpc почему-то не юзется) за несколько часов? (на одном и том же железе)
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

shade писал(а):(точнее ld, т.к. внутренний компоновщик fpc почему-то не юзется)

Так внутренний сделали вроде только под Windows, а под Linux так и используется ld.
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Alexx2000
а он про линукс вроде и не говорил =)

ЗЫ помню пробывал лазарь пересобрать на ноуте, у меня там вообще 128, в общем подождал я ночьку и забил на это дело =)
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Attid писал(а):Alexx2000
а он про линукс вроде и не говорил =)

Про линух 8)
Но не суть важно...

Неужели ни у кого нет 1 Гб оперативы чтобы проветить? или всем просто влом?
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

shade писал(а):1. Сколько оперативы нужно чтобы собрать пустую форму в лазаре? Около 1Гб видимо (256Мб моей оперативы и своп у меня перестал рости после отметки 470Мб.


А у тебя какое ядро 2,4 или 2,6 ?

shade писал(а):2. Какой будет размер исполняемого файла пустой формы собранной со смарт линком?


Большой. С ГТК он ничего не сделает.

shade писал(а):3. Почему Delphi со смартлинком (включенном по умолчанию) собирает проект менее чем за 1сек, а лазарь (точнее ld, т.к. внутренний компоновщик fpc почему-то не юзется) за несколько часов? (на одном и том же железе)


Он появился в Делфи ?

Alexx2000 писал(а):Так внутренний сделали вроде только под Windows, а под Linux так и используется ld.


Да, точно.

shade писал(а):Неужели ни у кого нет 1 Гб оперативы чтобы проветить? или всем просто влом?


MSE рулит !
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

С гигом оперативки Лазарь в линуксе у меня собирался за секунды (примерно так же, как в винде с внутренним линкером).

p.s. Вот только был ли у меня включен смартлинк при этом?
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Alexander писал(а):А у тебя какое ядро 2,4 или 2,6 ?

[alex@localhost i386-linux]$ uname -a
Linux localhost.localdomain 2.6.17-1.2157.1asp #1 Fri Aug 11 03:02:11 EEST 2006 i686 i686 i386 GNU/Linux

Alexander писал(а):
shade писал(а):2. Какой будет размер исполняемого файла пустой формы собранной со смарт линком?

Большой. С ГТК он ничего не сделает.

А подкрепить ответ чем-нибудь можешь? Сам пробовал?

Alexander писал(а):
shade писал(а):3. Почему Delphi со смартлинком (включенном по умолчанию) собирает проект менее чем за 1сек, а лазарь (точнее ld, т.к. внутренний компоновщик fpc почему-то не юзется) за несколько часов? (на одном и том же железе)

Он появился в Делфи ?

В Delphi 6 точно есть, не совсем умный, но всё-таки есть.

Предлагаю провести такой эксперимент:
Шаг 1. В ~/.fpc.cfg добавляем опцию -CX
Шаг 2. собираем лазарус через make clean all
Шаг 3. убеждаемся что в lazarus/lcl/units/i386-linux есть куча файлов libp*.a (они появляются, если указан -CX) (i386-linux - это если у вас линукс...)
Шаг 4. в ~/.fpc.cfg добаляем к -CX еще и -XX
Шаг 5. запускаем лазаря, создаем пустой проект с одной формой, компилируем, делаем strip
Шаг 6. Отписываемся о результатах на форуме. Указываем размер имеющейся ОП, свопа, конченого исполняемого файла и примерное вермя его компиляции.

На Шаге 2 у вас может быть .fpc.cfg примерно такого содержания

Код: Выделить всё

# searchpath for units and other system dependent things
-Fu/usr/local/lib/fpc/$FPCVERSION/units/$FPCTARGET/
-Fu/usr/local/lib/fpc/$FPCVERSION/units/$FPCTARGET/*
-Fu/usr/local/lib/fpc/$FPCVERSION/units/$FPCTARGET/rtl

-CX


На Шаге 5 такой:

Код: Выделить всё

# searchpath for units and other system dependent things
-Fu/usr/local/lib/fpc/$FPCVERSION/units/$FPCTARGET/
-Fu/usr/local/lib/fpc/$FPCVERSION/units/$FPCTARGET/*
-Fu/usr/local/lib/fpc/$FPCVERSION/units/$FPCTARGET/rtl

-CX
-XX
Аватара пользователя
WatchRooster
незнакомец
Сообщения: 2
Зарегистрирован: 30.12.2007 16:00:03
Откуда: Майкоп
Контактная информация:

Сообщение WatchRooster »

512 Мб
Попробовал смартлинк на lazarus. Свопил ровно час. Процессы слетали один за одним. Очередным полетевшим за борт оказался компоновщик.
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

shade писал(а):А подкрепить ответ чем-нибудь можешь? Сам пробовал?


Одна из причин моей миграции в MSE. Насколько я понял, смартлинк
работает только с тем, что сделал FPC, а с сишными либами нет.
Если вру, поправьте.

shade писал(а):2.6.17-1.2157.1asp


Вроде нормально. Я когда то думал, что это было из за старого ядра.
Но, похоже, что нет. Так что зависает, значит, смартлинк на Лазарусе.

И это концептуальные проблемы. Если бы силы, брошенные на борьбу
с вот такими глюками Лазаруса, бросить на MSE, мы бы уже имели
передовую среду разработки под Линукс. Да и Вин, видимо, тоже.
А пока разгром всякого развития.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

И это концептуальные проблемы. Если бы силы, брошенные на борьбу
с вот такими глюками Лазаруса,
============
Лазарус - ни при чем. MSEide (да и более мелкие MSEgui-проекты ) с опциями "-CX -XX" о-о-чень долго собираются.

Проблема - в отсутствии в FPC нативного компоновщика.

ПС:
Кстати, "-ХX" проигрывает "-CX -XX" не очень много, но выполняется быстро. Я именно так ( "make 4" ) собираю релизы MSEgui-проектов ( серьезный БД-проект получается порядка 2М )
Последний раз редактировалось debi12345 06.01.2008 02:46:13, всего редактировалось 1 раз.
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

debi12345 писал(а):Лазарус - ни при чем. MSEide (да и более мелкие MSEgui-проекты ) с опциями "-CX -XX" о-о-чень долго собираются.


То что долго пока пофиг. Лазарус вообще кирдык на нём.
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

И эффективность смартлинка для проектов Лазаруса низкая.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Alexander писал(а):И эффективность смартлинка для проектов Лазаруса низкая.

Это "да" - потому база Лазаруса есть wrappers вызовов сторонних API. И, похоже - авторы (в отличие от мартина) спецон не парятся смарт-линкуемостью.
На MSEgui-проектах, очень долгая "-CX -XX" {смарт-компиляция самого проекта и GUI-библиотеки + смарт линковка с FPC } дает 30-40% выигрыш размера относительно голой и быстрой "-XX" {смарт-линковка с FPC }. Для Лазаруса каково соотношения для этих опций ?
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Alexander писал(а):И эффективность смартлинка для проектов Лазаруса низкая.

debi12345 писал(а):Для Лазаруса каково соотношения для этих опций ?

Худеет на 43%. В относительных цифрах неплохо, ну а в абсолютных (конечный результат 1.3Мб всё же удручает).

WatchRooster всё-таки провёл эксперимент (по приведенной выше схеме). На 512 Мб сам лазарус со смартлинком он собрать не смог, но пустую форму собрал. Без смартлинка 2.3Мб, со смартлинком 1.3Мб.

Так что делаем выводы:
1. смартлинк рулит
2. ld - тормоз
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

А смартлинк дает что-нибудь в плане прироста в скорости работы самой программы? Или он только для уменьшения размера проги?
Ответить