Здравствуйте, Аноним, Вы писали:
А>http://www.citforum.ru/programming/C_comp/
А>Есть анализы "посвежее" ?
Самый "свежий" анализ в бусте. Заходишь в "boost/config/compiler" и считаешь сколько
макросов с именем "BOOST_NO_????" определено для компилятора в интересующей версии.
В результате принимаешь решение является ли этот компилятор компилятором C++ или какого-то другого языка...
__________
16.There is no cause so right that one cannot find a fool following it.
1) Как можно сравнить производительность используя разные версии STL?
2) Не указаны ключи компиляции для разных компилеров
3)
Кроме того, для Borland Builder была добавлена опция --fast-call — передача параметров через регистры (Intel Compiler, MSVC++ и gcc автоматически используют передачу параметров через регистры при использовании оптимизации по скорости
Повидимому, автор не совсем владеет предметом.
4) Анализ ассемблерного кода — это вообще шедевр .
5) Вывод тоже хорош: лучший компилер всех времен и народов — Borland Builder C++.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
gbt wrote:
>> А можно что-нибудь посущественнее найти, чем поведение одного >> _НЕСТАНДАРТНОГО_ макроса? > Существенным здесь было определение двух одноименных переменных i в > циклах for в > одном блоке
#define for if(0);else for
И будет вам счастье....
Это не было ошибкой в 98 году, так как Стандарта тогда еще тоже не было.
Здравствуйте, Аноним, Вы писали:
А>http://www.citforum.ru/programming/C_comp/
А>Есть анализы "посвежее" ?
Однажды в какому-то номере журнала "Программист" была статья Криса Касперски про сравнение компиляторов. Где то она и в сети есть, а скорее всего и в архиве www.programme.ru.
Имхо, очень неплохая стаьтя. Сравнивал он там WatCom 10, VC6 и какой-то, сори не помню, бильдер.
Очень неплохой анализ, куча информации и статистики по свертке функций, переменных, циклов, оптимизации потока данных, ну в общем на полную катушку по теории компиляции. Он даже про единое промежуточное представление что-то написал там. В общем, имхо весьма грамотная статья.
В общем как раз про именно ту часть компилятора которая называется front-end (разбор и все прочее, и генерация промежуточного представления). А кодогенерация имхо очень сильно будет зависеть от целевой плаформы — пример связки VC+Inter C++ Compiler это по моему, неплохо демонстрирует
Carc wrote: > А>Есть анализы "посвежее" ? > Однажды в какому-то номере журнала "Программист" была статья Криса > Касперски про сравнение компиляторов. Где то она и в сети есть, а скорее > всего и в архиве www.programme.ru <http://www.programme.ru>.
"Программист" загнулся вместе с сайтом. Я поискал — не нашёл. Хотя на
полке оно у меня лежит. > Имхо, очень неплохая стаьтя. Сравнивал он там WatCom 10, VC6 и какой-то, > сори не помню, бильдер.
Потом в следующей статье других авторов эти же тесты были прогнаны на
gcc и watcom 11. Злыми поклонниками watcom/openWatcom. > Очень неплохой анализ, куча информации и статистики по свертке функций, > переменных, циклов, оптимизации потока данных, ну в общем на полную > катушку по теории компиляции. Он даже про единое промежуточное > представление что-то написал там. В общем, имхо весьма грамотная статья. > В общем как раз про именно ту часть компилятора которая называется > front-end (разбор и все прочее, и генерация промежуточного > представления). А кодогенерация имхо очень сильно будет зависеть от > целевой плаформы — пример связки VC+Inter C++ Compiler это по моему, > неплохо демонстрирует
Было дело. В исходном тесте всех (увы) обогнал VC, иногда обгоняемый ICC.
Здравствуйте, raskin, Вы писали:
R>Carc wrote: >> А>Есть анализы "посвежее" ? >> Однажды в какому-то номере журнала "Программист" была статья Криса >> Касперски про сравнение компиляторов. Где то она и в сети есть, а скорее >> всего и в архиве www.programme.ru <http://www.programme.ru>. R>"Программист" загнулся вместе с сайтом. Я поискал — не нашёл. Хотя на R>полке оно у меня лежит.
можна заглянуть на "клуб Весельчак У" (имхо, shelek.club.ru но точно не помню). Там бывают Икс человек из админов (Гром, Ack еще кто-то) старого сайта "Программиста" — и какие то части форумов и архивов у них есть.
Здравствуйте, Lepsik, Вы писали:
L>Здравствуйте, AndrewJD, Вы писали:
AJD>>5) Вывод тоже хорош: лучший компилер всех времен и народов — Borland Builder C++.
L>Если бы еще кто-то был не только писателем а читателем и увидел строчку :
L>---В забеге принимают участие компиляторы Microsoft Visual C++ 6.0, Intel C++ Compiler 4.5, Borland Builder 6.0, MinGW (портированный gcc) 3.2.
L>надеюсь ни у кого нет сомнений что компилятор VC6.0 был гораздо хуже BB 6.0 ?
BB 6.0 это компилятор языка C++?
Наверное какой-то урезанной версии языка..
... << А писал я этот бред на RSDN@Home 1.1.4 stable rev. 510, под звуки Led Zeppelin — The Battle of Evermore>>
> L>>надеюсь ни у кого нет сомнений что компилятор VC6.0 был гораздо хуже BB 6.0 ? > А>На моих задачах BB сливал вчистую и Intel 5.0 и VC6.0 > > ну тогда откомпилите такие строчки в vc6 > > >
> Здравствуйте, espider, Вы писали: > > > E>в VC7 откомпилил > > зачем мне VC2222 если сравнение идет про конкретные среды vc6 И bcb6 > > выйдет BCB.NET в ноябре тогда и сравнивать надо.
Ну если и VC6, возможно ли на bcb6 собрать exe (dll) размером не более 3 kb без CRTL. В VC6 возможно, для bcb6 нереально .
Попутно вопрос, почему bcb6 передает указатель this через стек, а не как vc6 через eax и что из них правельнее, то есть ближе к стандарту (ansi)? P.S.: Стоит отметить, что vc7 в этой части пошел по стопам bcb6
Здравствуйте, espider, Вы писали:
E>Ну если и VC6, возможно ли на bcb6 собрать exe (dll) размером не более 3 kb без CRTL. В VC6 возможно, для bcb6 нереально .
А зачем решать надуманные задачи?
E>Попутно вопрос, почему bcb6 передает указатель this через стек, а не как vc6 через eax и что из них правельнее, то есть ближе к стандарту (ansi)? P.S.: Стоит отметить, что vc7 в этой части пошел по стопам bcb6
Стандарт на этот счёт не распространяется, а VC6 и VC7.x и VC8, короче все VC, передают this в регистре ECX
Lepsik wrote:
> E>в VC7 откомпилил > зачем мне VC2222 если сравнение идет про конкретные среды vc6 И bcb6 > выйдет BCB.NET в ноябре тогда и сравнивать надо.
А можно что-нибудь посущественнее найти, чем поведение одного
_НЕСТАНДАРТНОГО_ макроса?
Hello, Cyberax, you wrote:
> А можно что-нибудь посущественнее найти, чем поведение одного > _НЕСТАНДАРТНОГО_ макроса?
Существенным здесь было определение двух одноименных переменных i в циклах for в
одном блоке:
>
Здравствуйте, gbt, Вы писали:
>> А можно что-нибудь посущественнее найти, чем поведение одного >> _НЕСТАНДАРТНОГО_ макроса? gbt>Существенным здесь было определение двух одноименных переменных i в циклах for в gbt>одном блоке:
Насколько я помню, когда были первые версии VC стандарт еще жестко не определял видимость переменных внутри блока.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Hello, AndrewJD, you wrote:
> Насколько я помню, когда были первые версии VC стандарт еще жестко не > определял видимость переменных внутри блока.
Читаем
C++ Standard Noncompliance Issues with Visual C++ 6.0
ID: Q243451
...
Scope of variable declared in the for loop initialization (6.5.3) not as per standard. Q167748 PRB: Variable Scope in for-statement Extends Beyond Loop...
SYMPTOMS
If you declare the same variable in two different for-statements, the following error may appear:
CAUSE
The scope of a variable declared in the initialization part of a "for" loop is given local scope, as if it had been declared immediately prior to the for-statement
gbt wrote:
>> Насколько я помню, когда были первые версии VC стандарт еще жестко не >> определял видимость переменных внутри блока. > Читаем > *C++ Standard Noncompliance Issues with Visual C++ 6.0*
Еще раз: когда VC6 разрабатывался — Стандарта еще _НЕ_ _БЫЛО_. Более
того, Стандарт появился только через полгода после релиза VC6. Для
Стандарта 92 года поведение VC6 — правильно. Ну и это неправильное
поведение фиксится простым макросом.
Найдите, наконец-то, настоящие недостатки, а не мелкие придирки.
Здравствуйте, Cyberax, Вы писали:
>> Читаем >> *C++ Standard Noncompliance Issues with Visual C++ 6.0* C>Еще раз: когда VC6 разрабатывался — Стандарта еще _НЕ_ _БЫЛО_.
К томуже лично мне важнее стабильность back-end'а ибо странности front-end'а вылавливаются на этапе компиляции, а вот глюки кодогенератора которые к томуже еще и зависят от фазы луны куда страшнее.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Beginning with Visual C++ 6.0, when statically linking with a DLL, the linker provides options to delay load the DLL until the program calls a function in that DLL.
Более того, подозреваю, что это в Борланде было "срисовано" с VC++6.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, espider, Вы писали:
>> Здравствуйте, espider, Вы писали: >> >> >> E>в VC7 откомпилил >> >> зачем мне VC2222 если сравнение идет про конкретные среды vc6 И bcb6 >> >> выйдет BCB.NET в ноябре тогда и сравнивать надо. E>Ну если и VC6, возможно ли на bcb6 собрать exe (dll) размером не более 3 kb без CRTL. В VC6 возможно, для bcb6 нереально .
То что в BCB нельзя откомпилировать файл размером размером не более 3кб — это хлубокая чушь и не знание вопроса.
Я не фанат билдера и реально не считаю его лучше того же VC, но я за честность и объективность.
Обкакивать — это не красиво.
E>Попутно вопрос, почему bcb6 передает указатель this через стек, а не как vc6 через eax и что из них правельнее, то есть ближе к стандарту (ansi)? E>P.S.: Стоит отметить, что vc7 в этой части пошел по стопам bcb6
Раз понел по стопам, значит инженеры Borland были правы, сделав передачу через стек.
Re[12]: Сравнение компиляторов
От:
Аноним
Дата:
27.07.05 05:26
Оценка:
Здравствуйте, Cyberax, Вы писали:
C>Найдите, наконец-то, настоящие недостатки, а не мелкие придирки.
Любой чих с шаблонами
#include <iostream>
template<int i> void f() { std::cout << i << std::endl; }
int main( int argc, char* argv[] )
{
f<1>();
f<2>();
return 0;
}
> E>Ну если и VC6, возможно ли на bcb6 собрать exe (dll) размером не более 3 kb без CRTL. В VC6 возможно, для bcb6 нереально . > > То что в BCB нельзя откомпилировать файл размером размером не более 3кб — это хлубокая чушь и не знание вопроса. > Я не фанат билдера и реально не считаю его лучше того же VC, но я за честность и объективность. > Обкакивать — это не красиво.
Мда... Не знание вопроса скорее с вашей стороны. Даже если вы и соберете бесполезную пустышку в bcb6 ее размер будет около 7к (минимум что смог получить), НО это с привязкой к динамик RTL (cc3260.dll) рамером ~1.5Mb!!! Если же собирать без RTL (в статике), то она автоматом линкуется к модулю и тут уж рзмер менее 50к вы неполучите. Речь идет о поддержке компилятором сборки без RTL вообще как в статике так и динамике, т.е. только WIN API и ничего лишнего.
> E>Попутно вопрос, почему bcb6 передает указатель this через стек, а не как vc6 через eax и что из них правельнее, то есть ближе к стандарту (ansi)? > E>P.S.: Стоит отметить, что vc7 в этой части пошел по стопам bcb6 > > Раз понел по стопам, значит инженеры Borland были правы, сделав передачу через стек.
Внимательней надо читать ветку. Выше меня уже поправили — в VC this передается через ECX, и ето так, проверено!
Здравствуйте, Аноним, Вы писали:
А>У меня vc6+sp5. Debug/Release без разницы. Пустой консольный Win32 проект. Все опции по умолчанию. Добавляю один файл main.cpp
Аналогичен до безобразия... Но все же:
1
2
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
wrote:
> C>Что я делаю не так? Компилятор vc6+sp4. > У меня vc6+sp5. Debug/Release без разницы. Пустой консольный Win32 > проект. Все опции по умолчанию. Добавляю один файл main.cpp > >2 >2 > > Подобное было не только у меня. Ещё по крайней мере у двоих знакомых > повторялось.
sp5 я ставить не хочу, так что тестировать негде.
А вообще, насчет темплейтов лучше бы поклонники Borland'а молчали в
тряпочку — в Борланде нет даже friend-темплейтов. А уж багов в
реализации шаблонов вообще куча — поищите в коде Boost'а по слову BORLAND.