Не похоже, чтобы вы компилировали хоть что-нибудь средней сложности из дельфи на лазарусе. Отличия в большом количестве мелочей, утомляет. И либы другие, а кроссплатформенно надо много дописывать и переписывать самому. Если надо с дельфи на лазарус под винду - это еще имеет смысл. Если кроссплатформенно, лучше переписать проект заново на других компонентах по другому. По моему опыту, конечно.sts писал(а):вы видимо путаете с фрипаскалем, лазарус сделан чтоб бесплатно компилить исходники для делфы
Просто TClientSocket
Модератор: Модераторы
Написано же «при изменении размера чудовищные тормоза», а весь смысл динамических массивов в динамическом изменении размеров. То есть доступ к однократно созданному массиву вполне быстрый, но чем это отличается от обычного выделения памяти, не очень понятно. Однако любой вызов SetLength моментально превращает «карету в тыкву», и чем больше размер «динамических массивов» и чаще вызывается SetLength, тем более «квадратная тыква» выходит.iskander писал(а):"Медленный массив" немного напоминает синий вкус или горький цвет.
Добавлено спустя 7 минут 51 секунду:
Мдя это перл !sts писал(а):вы видимо путаете с фрипаскалем, лазарус сделан чтоб бесплатно компилить исходники для делфы
ИМХО: «Лазарус» сделан как бесплатная альтернатива «Дельфи» с использованием бесплатного компилятора FPC.
То есть по задумке его авторов всё, что можно делать в «Дельфи», можно делать в «Лазарусе», причем делать довольно похожим образом, но прямая компиляция исходников «Дельфи» в «Лазарусе» в принципе НЕ ПРЕДУСМОТРЕНА проектом.
Да, в «Лазарусе» есть встроенный конвертер исходников «Дельфи 2 Лазарус» и есть режим частичной совместимости в FPC, но на самом деле проще и надежнее вместо «официально кривой конверсии» сразу написать проект-аналог (то, что в основе лежит тот же самый «Обжект Паскаль», разумеется, всё упрощает, но 100%-й совместимости нет и быть не может «по умолчанию»).
да, надо понимать как они работают.Alex2013 писал(а):Просто почти никто не будет увеличивать размер строки по одному символу до мегабайтных размеров, а в случае бинарного динамического массива это чисто логически кажется вполне «штатным случаем».
не совсем, говорят что там вызывается функция менеджера памяти (в делфе под винду, давно слыхал) типа "resize" и если есть возможность то блок памяти просто расширится без копирования, а вот если нет то да.Alex2013 писал(а):Но прикол в том, каждое изменение размера динамического массива вызывает копирование всего массива в новое место в памяти
Добавлено спустя 2 минуты 48 секунд:
по этому и написано что максимально, т.е. они стремятся к этому.stikriz11 писал(а):Не похоже, чтобы вы компилировали хоть что-нибудь средней сложности из дельфи на лазарусе. Отличия в большом количестве мелочей, утомляет.
и основная проблема в сторонних библиотеках а не в базовом коде.
Имхо в девяти случаях из десяти именно это и происходит.Alex2013 писал(а):Просто почти никто не будет увеличивать размер строки по одному символу до мегабайтных размеров
Что-то вдруг вспомнилосьAlex2013 писал(а):а в случае бинарного динамического массива это чисто логически кажется вполне «штатным случаем».
Код: Выделить всё
- Василий Иванович, а вот ты знаешь, что такое "логично"?
- Конечно знаю, Петька, вон видишь на пригорке дом стоит?
- Вижу, Василий Иванович.
- А крыша у него красная.
- Вижу, Василий Иванович, красная.
- Вот так и человек, жил-жил, да и помер.
Это возможно только если сразу за текущим "местопребыванием " массива находится свободное место подходящего размера, но я сильно сомневаюсь что в реальной программе основанной на динамических классах эта ситуация складывается достаточно часто.sts писал(а):не совсем, говорят что там вызывается функция менеджера памяти (в делфе под винду, давно слыхал) типа "resize" и если есть возможность то блок памяти просто расширится без копирования, а вот если нет то да.
Зы
Вообщем был тут когда-то спор другому поводу но в результате было выяснено, что разница между использованием динамических массивов и TStringList в любой более менее реальной программе иногда поучается более чем на порядок .
Зы Зы
О производительности динамических массивов...
Оказывается все еще "оригинальнее" ... и Setlength еще и нулями выделенную память заполняет
Добавлено спустя 2 минуты 27 секунд:
iskander писал(а):Что-то вдруг вспомнилось
Последний раз редактировалось Alex2013 01.08.2025 12:48:19, всего редактировалось 1 раз.
Никогда в жизни один не будет заменять другого. Они просто используют один язык. Имея лицензию Delphi нафиг не нужен Lazarus, так же как имея и делая проекты на Lazarus нафиг не нужна Delphi. Конвертер нужен только, чтобы с меньшими затратами времени переехать на другую платформу. Если разработкик прыгает между двумя средами - это больше похоже на кривой техпроцесс разработки, чем на хорошо настроенный рабочий процесс.sts писал(а):по этому и написано что максимально, т.е. они стремятся к этому.
У меня одновременно в использовании Laz и CT, и то плеваться хочется, что перенес пару вещей на последний, в угоду базе GUI компонентов.
Совершенно верно ! Как я уже писал Лазарус это альтернатива Дельфи . (с сохранением части "Дельфийских традиций" но это нигде не "клон Дельфи" и разумеется не стремится им быть (бо дело это банально подсудное ) )Sharfik писал(а):Никогда в жизни один не будет заменять другого.
естественно не будет, вот тока это не отменяет того что считают разработчики лазарусаSharfik писал(а):Никогда в жизни один не будет заменять другого.
Добавлено спустя 3 минуты 5 секунд:
естественно, ну я учитываю это когда пишу код, стараюсь в таких случаях чтоб массив был "последним"Alex2013 писал(а):Это возможно только если сразу за текущим "местопребыванием " массива находится свободное место подходящего размера, но я сильно сомневаюсь что в реальной программе основанной на динамических классах эта ситуация складывается достаточно часто.
Откуда такие сведения ?sts писал(а): что считают разработчики лазаруса
Добавлено спустя 4 минуты 57 секунд:
ИМХО В общем случае не поможет . ( в программе управляемой "событиями/сообщениями" постоянно что-то создается и удаляется из памяти )sts писал(а):естественно, ну я учитываю это когда пишу код, стараюсь в таких случаях чтоб массив был "последним"
Когда сравнивают попу с пальцем, получаются странные вещи.Alex2013 писал(а):Вообщем был тут когда-то спор другому поводу но в результате было выяснено, что разница между использованием динамических массивов и TStringList в любой более менее реальной программе иногда поучается более чем на порядок .
Впрочем, это совсем другая история
Код: Выделить всё
Урок математики в 6-м классе, учитель задаёт задачу.
- Летели по небу два крокодила, синий и красный. Сколько мне лет?
Вовочка скорей тянет руку отвечать.
- Ну, хорошо, Вовочка, отвечай.
- Двадцать четыре, Марьванна.
- Правильно, Вовочка, как ты решил?
- Да это легко, Марьванна. Мне двенадцать, а меня папа полудурком кличет.
Ага, не прошло и три года.Alex2013 писал(а):Зы Зы
О производительности динамических массивов...
Оказывается все еще "оригинальнее" ... и Setlength еще и нулями выделенную память заполняет короче это полный алис!
Спасибо всем ответившим. Сделал свою обертку над сокет API. Как по мне, получилось даже удобнее делфового клиент-сокета.
И хотя серверный сокет мне в этом проекте не нужен и не планировался, но базовый класс клиентского сокета так хорошо лег под задачи серверного воркера, что решил сделать еще полноценный серверный сокет, и выложить все на гитхаб. Нужно только привести исходники в презентабельный вид.
И хотя серверный сокет мне в этом проекте не нужен и не планировался, но базовый класс клиентского сокета так хорошо лег под задачи серверного воркера, что решил сделать еще полноценный серверный сокет, и выложить все на гитхаб. Нужно только привести исходники в презентабельный вид.
дык яж цитату с их сайта привелAlex2013 писал(а):Откуда такие сведения ?
дык их в общем случае и не используют на прямую, обычно через всякие оберткиAlex2013 писал(а):ИМХО В общем случае не поможет . ( в программе управляемой "событиями/сообщениями" постоянно что-то создается и удаляется из памяти )
... Я запросто могу ошибаться, но я старюсь писать по делу . Чего и вам искреннее желаю.iskander писал(а):... получаются странные вещи.
Добавлено спустя 12 минут 47 секунд:
Можно ссылку ? (действительно никогда не замечал там таких заявлений )sts писал(а):дык яж цитату с их сайта привел
Добавлено спустя 10 минут 24 секунды:
Честно говоря я думаю что "динамические массивы" вообще в прямом смысле не динамические, а рассчитаны на однократное или очень редкое создание и еще более редкое изменение размера . В этом случае их механика работы имеет смысл и многое может упростить. Или же это вообще какое-то легаси из стандарта Обжект Паскаль которое тащат из версии в версию просто "шоб було".sts писал(а): дык их в общем случае и не используют на прямую, обычно через всякие обертки
ЗЫ
Ладно народ если что извинюсь и давайте действительно завязывать с оффтопом... бо "Остапа уже слегка несет" .
https://en.wikipedia.org/wiki/Lazarus_(software)Alex2013 писал(а):Можно ссылку ?
Lazarus is a cross-platform, integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler. Its goal is to provide an easy-to-use development environment for developing with the Object Pascal language, which is as close as possible to Delphi.
Есть и исключения, когда ведется разработка компонентов под разные среды и операционные системы. Да, это трэш, но в таком случае без него никак.Если разработкик прыгает между двумя средами - это больше похоже на кривой техпроцесс разработки, чем на хорошо настроенный рабочий процесс.
