Борланд генерит не идеальный, но вполне приличный код - как по размеру так и по скорости. Неоптимальный он только с точки зрения снобствующих кулхацкеров.
Partner Это чисто твое умозаключение? Или есть действительно обоснованные доказательства? Имхо ты невидел код который генерит делфи, или если видел то понятия не имел что такое оптимизация и что за код был сгенерирован. Делфи генерирует хреновый код, но сама платформа делфи не разрабатывалась для суперскоростных распределенных вычислений, код который нужно оптимизировать можно вынести в другие модули которые написать на любом требующем скорости и оптимизации языке. Каждый язык разработан для своей сферы применения и определенных задач, к чему собственно всегда приходят на 50 странице обсуждения. Давайте быстрее уже набивайте посты, осталось всего 49 страниц и истина будет достигнута. А то если забыли есть еще тормозная НЕТ платформа, ЯВУ можно вспомнить ну и визуалбейсик с P-кодом, потом можна выложить в теме пару крякмисов на вышеперечисленных языках.
Я не фанатик-дельфист. Одинаково хорошо знаю как дельфи так и С/С++ Просто стараюсь быть объективным. И как выглядит код изнутри тоже имею достаточно хорошее представление. По поводу .NET - все почему-то забывают, что в результате байт-код компилируется в native. А JIT компилятор от майкрософта вполне на уровне. Так-что про тормоза я бы не говорил.
PaCHER встретил вчера в выневой осевой длле (user32 ?) такую функу: push ebp mov ebp,esp pop ebp ret пи-код не такая плохая штука и к оптимальности отношения не имеет. Более того, позволяет прооптимизировать всю прогу целиком (оптимайзер в линкере). С оптимизацией дельфы не заморачивались, тк целевой аудитории это не интересно даже в принципе. Комково интереснее для данного продукта - крутая иде и максимум рада на картинках. Есть такой себе асм на картинках, не помню как называется, как думаете, какой код он дает?
Booster Извините, но здесь Вы сказали глупость, и сразу по трём причинам. Во-первых, скорость компиляции и качество кода связаны между собой весьма и весьма неявной зависимостью, и вовсе не всегда более быстрый компилятор генерит менее качественный код и наоборот. Во-вторых, куда больше скорость компиляции зависит от языка, на котором написана компилируемая программа. Здесь Паскаль обходит Си вчистую: и препроцессорная обработка не требуется, и синтаксис более простой. Ну а в-третьих, при разработке проекта скорость компиляции зачастую важнее скорости исполнения кода. Возьмите, например, бухгалтерскую систему. Основное время её работы занимает ожидание действий пользователя или выполнение иных операций ввода-вывода (ввод всяких документов человеком, печать отчётов и т.д.). Все эти операции выполняются с точки зрения процессора чрезвычайно медленно, и он попросту простаивает. Поэтому не играет абсолютно никакой роли, насколько оптимален соответствующий код. А вот скорость разработки бухгалтерской программы важна и по срокам разработки (чем меньше времени уходит на компиляцию, тем больше его на собственно программирование и отладку), и по стоимости разработки (чем быстрее программа будет сделана, тем меньше придётся заплатить программистам -- оплата-то повременная обычно). Так что издёвка Ваша совершенно неуместна.
Интересно, сколько из тех, кто говорит что дельфовый код отстой, лично видели этот код? Подозреваю, что лишь некоторые. А если и видели, то способны оценить качество? Таких еще меньше. Остальные просто где-то слышали, что дельфи - гуано. И не устают это повторять при каждом удобном случае. В общем типичный холливар...
ну я видел. примеров накидать? например ченить такое: Code (Text): ___:300316A4 _Engine_get_VA proc near ; CODE XREF: _Engine_jmp_VAp ___:300316A4 ; _Engine_jmp_VA_edx+1p ... ___:300316A4 000 add eax, hEngine_dll ; Add ___:300316AA 000 retn ; Return Near from Procedure ___:300316AA _Engine_get_VA endp
А откуда ты знаешь, что это дельфовский код? Какой версии ? Оптимизация включена ? В дельфи фунции имеют стандартный пролог/эпилог. А здесь непонятно что. И вообще - пару байт кода на пример не тянет. Кроме того, в дельфи можно делать асмовые вставки. Я такого могу понаписать, но дельфи тут причем ? Если меряться, то брать кусок сорса и компилить конкретными компиляторами, а потом сравнивать.
Partner кто спорит что встречается. Только функа не имеет выхода на экспорт и код внутре уж сильно похож на компиль без оптимайза.
Partner Дельфозный компилятор, например, не умеет заменять деление на константу серией других операций (умножение, сдвиг, сложение-вычитание), которые будут выполняться быстрее. Вижуал Си++ умеет, ГНУсный си вроде тоже, интеловский -- умеет. Кстати, обругивать дельфозный компилятор за качество компиляции ещё не значит обругивать Дельфи. Я, например, утверждаю, что как компилятор Дельфи для сегодняшнего дня плох, как язык -- очень даже ничего (в целом куда лучше, чем Си/Си++, хотя возможностей формально меньше), ну а как среда разработки -- и подавно. И сам на нём постоянно пишу. Так что с моей стороны никакого холивара
SII да нечего здесь делить я это писал, но кто-то пост грохнул есть куча возможностей совместной работы с сятиной и асмом можно вашу делфянку использовать через механизм длл, вы можете также активикс аля ком делать для совместного использования а всё остальное мелочи нормальное совместное взаимодействие получается если Вы супердельфин так и пишите на нём, но здесь он вне закона просто пишите на чём хотите - проста аккила запретил здесь дельфянские дела
SII как язык -- очень даже ничего (в целом куда лучше, чем Си/Си++, хотя возможностей формально меньше) Какой язык, Object Pascal? Формально ли меньше (если учесть "приставку" объектный)?
SII Я пошутил, но в этой шутке есть доля правды. Мне не нравится какой борланд генерит код, например вот это - http://www.delphikingdom.com/asp/talktopic.asp?ID=195&Order=0&Count=10&pNo=35. И Билдер, что с оптимизацией, что без, генерит именно такой код. А в BC 5 вообще в теле цикла было присваивание констант. Я помню когда один проект раннее собранный на BC 5, собрал в студии и он стал работать примерно в 2 раза быстрее. Может для бизнес приложений это и не важно, ведь промедление в бизнесе - смерть, но теперь я к борланду не вернусь. Бизнес приложения я лучше буду писать на C#. А дельфи просто не моё. Сейчас я делаю мультимедиа приложения, а тут борланд курит в сторонке.
Те весь файл кинуть?) Само существование такой функции уже говорит об отсутствии оптимизации. Ну скомпили, докажи что делфи компилит не хуже Си.
Заглушки появляются если код раздельно компилится а потом общая линковка. Тогда компиль не делает инлайн (незнает где понадобиться)
wsd Ну, во-первых, в этой теме обсуждение языков вообще, а не конкретных задач. А во-вторых, мне всё ж кажется, что под запретом не Дельфи вообще, а вопросы типа "а как заставить компонент такой-то делать то-то". Или сдесь потрут тему о, например, реализации драйвера или там упаковщика на Дельфи? q_q Именно меньше. Сходу могу назвать две таких возможности. 1) В Дельфи нет "полноценного" множественного наследования. Правда, то, что его убрали из C# (во всяком случае, я про это слышал, но поскольку сам на обшарпанном си не пишу, то голову на отсечение не дам), говорит о том, что сей механизм не очень-то нужен. 2) В Дельфи нет шаблонов (вот их мне иногда не хватает; обойтись, есно, можно и без них, но возникает лишний геморрой). К чисто формальным придиркам можно отнести отсутствие полноценного препроцессора, но это я считаю как раз благом, а не недостатком. Условная трансляция есть, и этого достаточно; макросы на ЯВУ -- зло. ИМХО, есно Booster Насчёт "курит" не уверен, но спорить не готов: не занимался этим, поэтому компетентно судить не могу. Ну а обшарпанный Си, по отзывам знакомых, для бизнес-приложений подходит действительно лучше Си/Си++.
SWR Если это к моей цитате, то не совсем понимаю как соотносятся. Компиль у МС 100% родной, как он оптимизирует ехтерновые пустые функи - знаю. Налицо полностью отключеный оптимизатор.