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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Гонки компилеров, типа ралли Париж - Дакар :) 
:(
    Опции темы
chipset
Дата 8.2.2005, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Приветствую всех тяжело инфицированных программированием на С++ smile
Собственно продолжаю тему Я только сейчас понял что я идиот smile)).
Там выходили мысли устроить соревнования между компилерами Borland'a и VC7.1
Я также предлагаю задействовать в гонке comeau, VC6 и g++.
Собссна понадобится создать тестовой проект и определиться как отслеживать скорость..
Всё выкладуем сюда smile

Это сообщение отредактировал(а) chipset - 8.2.2005, 04:15


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
En_t_end
Дата 8.2.2005, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Зачем ? smile
Вот мысля smile
Попробывать скомпилить сорсы одних китайских или японских друзей smile у меня на компе лежат smile --- у меня на тогда ещё v.c 6 - компилилось 15 минут !!!! посмотрим, как с этой задачей справяться остальные smile
PM MAIL ICQ Skype GTalk Jabber   Вверх
S.A.P.
Дата 8.2.2005, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Можно сделать так: взять не очень большой код и скопировать его несколько раз, чтобы пообъемистей было, а то так сочинять запаримся smile . Заодно посмотрим, как компилеры это все соптимизируют.
PM MAIL   Вверх
gepard
Дата 8.2.2005, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



А почему бы не скомпилить исходники какой-нить игры, например, Quake2?
В оригинале на ftp'шнике id software лежат...


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
DENNN
Дата 8.2.2005, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



А почему бы тогда уж не выяснить скорсоть работы исполняемого кода?
Какой смысл измерять время компиляции?
PM ICQ   Вверх
maxim1000
Дата 8.2.2005, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



измерить стоило бы вообще как можно больше параметров (скорость компиляции, скорость работы, размер exe-файла, используемая память)


--------------------
qqq
PM WWW   Вверх
InfMag
Дата 8.2.2005, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: нет
Всего: 4



gepard
Исходники Quake 2 - это интересно. Не подскажешь адресок?
PM   Вверх
S.A.P.
Дата 8.2.2005, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(gepard @ 8.2.2005, 10:28)
А почему бы не скомпилить исходники какой-нить игры, например, Quake2?
В оригинале на ftp'шнике id software лежат...
сомневаюсь, что на билдере скомпилятся.

PM MAIL   Вверх
oleg1973
Дата 8.2.2005, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



а почему open watcom забыли?


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
chipset
Дата 8.2.2005, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(maxim1000 @ 8.2.2005, 00:17)
измерить стоило бы вообще как можно больше параметров (скорость компиляции, скорость работы, размер exe-файла, используемая память)

Ага smile
Я вообще хотел замерять еше по скорости компиляции отдельных фич языка ;)
Типа: шаблоны. указатели, СТЛ и т.д.

Цитата(oleg1973 @ 8.2.2005, 00:40)
а почему open watcom забыли?

А им кто-то пользуеться? smile



--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
En_t_end
Дата 8.2.2005, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



"VC7.1"
Сегодня обнаружил встроенную систему подсчета времени компилирования и линковки... короче билдинга.
Так что для этой среды вопрос с подсчетом решен.



Я же говорю давайте сорсы тех японцев скомпилим smile
их размер в архиве 5 мег, примерно.
PM MAIL ICQ Skype GTalk Jabber   Вверх
S.A.P.
Дата 8.2.2005, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Вся проблема соревнования Визуала и Билдера в том, что нужно делать программу, которая без изменений скомпилится и там и там.

Это сообщение отредактировал(а) Perchilla - 8.2.2005, 19:15
PM MAIL   Вверх
maxim1000
Дата 8.2.2005, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата
Вся проблема соревнования Визуала и Билдера в том, что нужно делать программу, которая без изменений скомпилится и там и там.

что-нибудь консольное, например...


--------------------
qqq
PM WWW   Вверх
Fixin
Дата 8.2.2005, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



Perchilla
Цитата
Вся проблема соревнования Визуала и Билдера в том, что нужно делать программу, которая без изменений скомпилится и там и там
WinAPI какраз такая штука, только прога нужна какая-то дюжа большая, чтобы объективно измерить, и комп чистый, свежий, не груженый сервисами всякими и тд и тп.

Это сообщение отредактировал(а) Fixin - 8.2.2005, 22:47
PM MAIL ICQ   Вверх
chipset
Дата 9.2.2005, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Perchilla @ 8.2.2005, 08:15)
Вся проблема соревнования Визуала и Билдера в том, что нужно делать программу, которая без изменений скомпилится и там и там.

STL рулит форева
да и заодно протестим STLPort smile
Добавлено @ 01:41
Итак надо определиться со списком компилеров:
  • Visual C++ 7.1
  • Visual C++ 6
  • Borland C++ Builder (я не знаю как там с версиями, вообще ламер smile )
  • comeau (стандарт, надо где-то его достать кстати)
  • gcc (который в MinGW32)
  • ?...
Для VC7.1 вопрос с замером решил En_t_end
Теперь насчёта проекта, я хочу включить в него следующие фичи:
Пример с контейнером
Пример с алгоритмом
Пару длинных циклов
Дефайны (много дефайнов smile)
RPC вызов (WinApi)
+ что то ещё smile

Это сообщение отредактировал(а) chipset - 9.2.2005, 01:42


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
gepard
Дата 9.2.2005, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Цитата
Исходники Quake 2 - это интересно. Не подскажешь адресок?

ftp://ftp.idsoftware.com/idstuff/source/quake2.zip
Perchilla
Цитата
сомневаюсь, что на билдере скомпилятся.

Я тоже сомневался, когда первый раз компилил. Спокойно на VC++ .NET (2002)

Помниться я даже извращался с геймплеем тогда, весело было smile



--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
chipset
Дата 9.3.2005, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Решил немножко взбродрить тему smile
Не забывайте, нам предстоит компилить не только на MSVC7.1, желательно чтобы код был компиляторо-портируемым.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
S.A.P.
Дата 9.3.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



У меня есть watcom и mingw. Что компилить будем? smile
PM MAIL   Вверх
chipset
Дата 9.3.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Отож.. Тебе надо поиметь Borland C++ Builder, VC7.1, VC6.
Я подумал что comeau можно исключить из списка: он используется для КАРДИНАЛЬНО (не путать с Cardinal'ом smile ) других целей..

Это сообщение отредактировал(а) chipset - 9.3.2005, 12:46


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
S.A.P.
Дата 9.3.2005, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(chipset @ 9.3.2005, 12:46)
Отож.. Тебе надо поиметь Borland C++ Builder, VC7.1, VC6.
VC 7.1 стоит. Builder и VC6 у меня есть на дисках, но ради правого дела поставить не жалко smile .

PM MAIL   Вверх
S.A.P.
Дата 9.3.2005, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Вот тут с запылившихся полок еще отрыл Borland C++ 5.5 и Symantec C++ 6.1 все под винду. Если они хотябы скомпилят что то, уже хорошо smile .
PM MAIL   Вверх
chipset
Дата 9.3.2005, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Perchilla @ 9.3.2005, 02:11)
VC 7.1 стоит. Builder и VC6 у меня есть на дисках, но ради правого дела поставить не жалко smile .

Ура smile
Теперь надо:
1) Тестовой проект
2) Утилита для замера скорости компиляторов.
Со вторым пунктом всё довольно просто: перенаправляем аутпут консоли компилера в программу, запускаем компилер на компиляцию проекта, ждём завершения компилинга, считаем время.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Chaos A.D.
Дата 9.3.2005, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 16.1.2005
Где: 09 RUS

Репутация: 6
Всего: 7



Ну а как же вы про Intel'овский забыли? Ходят слухи, что он самый быстрый. Вообще ссылки на кучу компилеров можно найти на хоумпаге Страуструпа
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
S.A.P.
Дата 9.3.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(Chaos @ 9.3.2005, 13:54)
Ну а как же вы про Intel'овский забыли?
есть у меня восьмой.
ИТАК!.

В гонке участвуют:
1. MSVC 7.1.
2. MSVC 6.0.
3. Intel C++ compiler 8.0.
4. MinGW (там много разных, возьмем те, что лучшие рузультаты покажут).
5. Open Watcom C++ 11.0.
6. Borland C++ Builder 6.0 (какой уж есть).
7. Borland C++ 5.5.
8. Symantec C++ professional 6.1.

предлагаю оценивать по следующим критериям:
1. Скорость компиления.
2. Производительность.
3. Размеры бинарника.
4. Соответствие стандарту (скомпилил / не скомпилил smile )

Платформа : Win32.
PM MAIL   Вверх
chipset
Дата 9.3.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Perchilla @ 9.3.2005, 03:20)
4. Соответствие стандарту (скомпилил / не скомпилил smile )

Можно немного задолбаться проверять все фичи стандарта smile
...
Насчёт тестового проекта, он должен быть таким:
1)Компилиться на всех восьми компилерах.
2)Быть достаточно обьемным, для замера скорости компиляции.
3)Быть достаточным для замера производительности.
Т.е. можно сообразить что-то с STL и его контейнерами, потом сделать тучу классов (copy-paste) и проверять..
ЗЫ. Может прикрепить эту тему?

Это сообщение отредактировал(а) chipset - 9.3.2005, 15:21


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
S.A.P.
Дата 9.3.2005, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



chipset кстати, можно QT собрать, она как раз компилиться на многих компилирах, правда тут Билдер отпадает, зато проги по замеру скорости не надо. На MSVC.NET с примерами у меня где то 30 минут собирается smile . Список участников соревнований тогда сузится:
1. MSVC
2. MSVC.net
3. MinGW
4. Intel C++
5. Borland C++ (wow smile )
6. Watcom C++

PM MAIL   Вверх
chipset
Дата 9.3.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Perchilla, не у нас цель была изначально: сравнить BCB++ и VC; все остальные компилеры уже второстепенно пришли.
Добавлено @ 15:46
Хотя мысль неплохая...


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
S.A.P.
Дата 9.3.2005, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Насчет STL. Я не уверен, что на всех представленных компилерах он есть. Даже QT свой STL тащит для совместимости. Так что не переборщить бы со стандартными фичами smile .
PM MAIL   Вверх
chipset
Дата 9.3.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Perchilla @ 9.3.2005, 04:54)
Я не уверен, что на всех представленных компилерах он есть.

А как он может где-нибудь не быть? Разве что разные версии..
Кстати я родил идею: компилим STLPort (http://stlport.org).

Это сообщение отредактировал(а) chipset - 9.3.2005, 15:59


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
S.A.P.
Дата 9.3.2005, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(chipset @ 9.3.2005, 15:59)
Кстати я родил идею: компилим STLPort (http://stlport.org).
то что надо! smile . Собрал через nmake VC++71, вышло 2 мин. 51 сек. общий размер сгенерированных файлов - 134 Мб из 590 кб исходников smile .

Блин, пробовал через MinGW, не компилит smile . Надо свой makefile писать. Сейчас попробую еще Билдер поставить.

А как производительность мерить будем? Прогу напишем, которая этот STLPort юзает?
PM MAIL   Вверх
sergejzr
Дата 9.3.2005, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



ИМХО и так я сно, что если на скорость мерять, то получится:

1) VC
2) builder
3) g++

Билдер изначально для дельфи был, вот и компилит с++ медленно.

Зато Дельфи сорсы сделает быстрее чем VC с++ сорсы похожего обьёма. Но это уже фичи языка.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
chipset
Дата 9.3.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Perchilla @ 9.3.2005, 08:38)
А как производительность мерить будем? Прогу напишем, которая этот STLPort юзает?

Производительность на других примерах можно проверить.
sergej.z, хм.. мне всёж таки хотелось бы реальных цифр smile

Это сообщение отредактировал(а) chipset - 9.3.2005, 20:15


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
S.A.P.
Дата 9.3.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



chipset блин, я не знаю, а BCB поддерживается STLPort ом?
http://www.stlport.com/dcforum/DCForumID7/2230.html
Добавлено @ 21:33
Так и знал, что с ним геморрой выйдет.
PM MAIL   Вверх
pablo
Дата 10.3.2005, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: 4
Всего: 6



Короче говоря, если вам нужен реальный пример вот он:
Попробуйте собрать Qt с разными компилерами, ну а там скорось налицо.
У меня на машине (AMD Athlon XP+ 2200, 256 RAM, HDD 7200) под g++ собиралась 6 часиков, под Мicrosoft Visual C++ 6.0 около 30 - 40 минут.

Я думаю разница чуствуется. smile




--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
Guest
Дата 16.3.2005, 15:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











При современной производительности процессоров важна не
скорость компиляции а качество кода
здесь имеет смысл сравнивать VC6/VC7/Intel
остальные отдыхают
замерять же тайминг надо у кусков кода заведомо важных
для оптимизации... скажем,
vc6 - floor() - медленный
vc71 - быстрый так как использует SSE2
intel - анологично...
и тп...
код для тайминга:
//---------------------------------------------
// CPUID use gives more accurate count
INLINE void __FASTCALL __GetTimestamp(__int64 *pTimestamp) {
__asm {
xor eax, eax ///mov eax, 0
cpuid
rdtsc
mov ebx, pTimestamp
mov dword ptr [ebx], eax
mov dword ptr [ebx+4], edx
xor eax, eax ///mov eax, 0
cpuid
}
}

or

#pragma warning(disable:4100)
// CPUID use gives more accurate count
void __fastcall GetTimestamp(__int64 *pTimestamp) {
__asm {
xor eax, eax ///mov eax, 0
cpuid
rdtsc
mov ebx, pTimestamp
mov dword ptr [ebx], eax
mov dword ptr [ebx+4], edx
xor eax, eax ///mov eax, 0
cpuid
}
}

далее что то типа


//---------------------------------------------
///NB: clicks_correct: prev return GetTimeFinalPerf() for empty f() or 0.0
/// nCountInternal: count array and oth cycle or 1
double __fastcall GetFinalPerf(double *aTics, ulong nCount, double clicks_correct, LPTSTR strmsg, ulong nCountInternal) {
ulong nCountUse;
double clicks;
if(nCount > 1) {
qsort_d(aTics, nCount);
clicks = 0;
ulong ibegin;
ibegin = nCount/3; ///calc interval 1/3: [1/3, 2/3]
register ulong i, end;
end = ibegin<<1;
for(i = ibegin; i < end; ++i)
clicks += aTics[i];

nCountUse = (end - ibegin);//(nCount/3);
clicks /= (double)nCountUse;
}
else {
nCountUse = 1;
clicks = aTics[0];
}

clicks = (clicks/GetCPUtime()) * 1000.0 - clicks_correct;
////////////////////////////////////////////////////////////////
if(strmsg)
flog("%30.40s\t%u|%d\t%15.1f ms\t%15.1f ms/cycle", strmsg, ///?strmsg:"",
nCount,
nCountUse,
clicks, clicks/(nCountInternal?nCountInternal:1));
return clicks;
}


........
//-----------------------------------------------------
///very fast !!!!!!!!!
///libNR (SCIENTIFIC COMPUTING)
void __fastcall QSORT(DTYPE_QS arr[], int n) {
--arr; ///todo: remove decrement! тяжелое наследие NRC
////////
#ifndef __CLIB_MT
static int istack[NSTACK];
#else
int istack[NSTACK];
#endif
int jstack;
jstack = 0;
int l;
l = 1;
register int ir;
ir = n;
for(;;) {
if(ir - l < M_OFF2) {
register int j;
for(j = l + 1; j <= ir; ++j) {
register DTYPE_QS a;
a = arr[j];
register int i;
for(i = j - 1; i >= l; --i) {
if(arr[i] <= a)
break;
arr[i+1] = arr[i];
}
arr[i+1] = a;
}
if(jstack == 0)
break;
ir = istack[jstack--];
l = istack[jstack--];
}
else {
register DTYPE_QS temp;
{
register int k;
k = (l + ir) >> 1;
__SWAP(arr[k],arr[l+1])
}

if(arr[l] > arr[ir]) {
__SWAP(arr[l],arr[ir])
}
if(arr[l+1] > arr[ir]) {
__SWAP(arr[l+1],arr[ir])
}
if(arr[l] > arr[l+1]) {
__SWAP(arr[l],arr[l+1])
}

register int j;
j = ir;
register DTYPE_QS a;
register int i;
i = l + 1;
a = arr[i];
for(;;) {
do i++; while (arr[i] < a);
do j--; while (arr[j] > a);
if (j < i) break;
__SWAP(arr[i], arr[j])
}
arr[l + 1] = arr[j];
arr[j] = a;
jstack += 2;
__ALGASSERT(jstack < NSTACK, "NSTACK too small in sort.", ;)
if(ir-i+1 >= j-l) {
istack[jstack] = ir;
istack[jstack - 1] = i;
ir = j-1;
}
else {
istack[jstack] = j - 1;
istack[jstack - 1] = l;
l = i;
}
}
}
}

..........

///////////////////////////////////////////////////
static double __cpu_ticks = 0.0;

#define __CPU_CHECK_TO_TIME 1
//--------------------------------------
///Time in seconds since UTC 1/1/70
double __fastcall GetCPUtime(void) {
double tmp;
if(0 == (tmp = __cpu_ticks)) {
__int64 t, t_end;
volatile time_t timer;

timer = time(NULL);
while(timer == time(NULL));
timer = time(NULL);

__GetTimestamp(&t);
while((timer + __CPU_CHECK_TO_TIME) > time(NULL));
__GetTimestamp(&t_end);

tmp = (t_end - t)/(__CPU_CHECK_TO_TIME*1000000.0);
__cpu_ticks = tmp;
}
return tmp;
}
--------------------------
использование например так:

__int64 start = 0, stop = 0;
double clicks, clicks_correct = 0;

__TYPE_OUT __FASTCALL __test1_correct(void) {
__TYPE_OUT res;
res = 0;
/////////////
start = stop = 0;
int64 start_inter, stop_inter;
for(int i = 0; i < COUNT_INTER; ++i) {
res = 0;
GetTimestamp(&start_inter);
/////////////////////////
register int j;
for(j = BEGIN_TEST_VAL; j < END_TEST_VAL; j++) {
res = res + __f1(j*TEST_STEP_D);
}
/////////////////////////
GetTimestamp(&stop_inter);
aTimes[i] = (double)(stop_inter - start_inter);
}
///////////////////////
clicks_correct = GetFinalPerf(aTimes, COUNT_INTER, 0.0, TEXT("Correct"), COUNT_TEST);
return res;
}

//--------------------------------------------------
__TYPE_OUT __FASTCALL __test1_f1_1(void) {
__TYPE_OUT res;
res = 0;
/////////////
start = stop = 0;
int64 start_inter, stop_inter;
for(int i = 0; i < COUNT_INTER; ++i) {
res = 0;
GetTimestamp(&start_inter);
/////////////////////////
register int j;
for(j = 0; j < ARRAY_SIZE; j++) {
res = res + FUNC(in[j]);
}
/////////////////////////
GetTimestamp(&stop_inter);
aTimes[i] = (double)(stop_inter - start_inter);
}
///////////////////////
GetFinalPerf(aTimes, COUNT_INTER, clicks_correct, FUNC_NAME, ARRAY_SIZE);
return res;
}

----------------------------------
main(){


res =__test1_correct_1();

res =__test1_f1_1();

}


[email protected]
http://www.sao.ru/hq/slkom

smile

  Вверх
chipset
Дата 28.3.2005, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Стряхну пыль с темы..
Нам бы что-нить, чтоп можно было BC++ и VC++ сравнить smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
S.A.P.
Дата 28.3.2005, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Да да да да! smile . Что будем компилить? smile STLPort в бильдере не компилиться.
PM MAIL   Вверх
chipset
Дата 28.3.2005, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Qt?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Dark Elf
Дата 28.3.2005, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 26.12.2003
Где: Брисбен

Репутация: 9
Всего: 10





--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
chipset
Дата 28.3.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Dark Elf, хм, оригинально - сравнивать VB6 и C++ smile
Однако ж, BCB там нету..


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Dark Elf
Дата 28.3.2005, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 26.12.2003
Где: Брисбен

Репутация: 9
Всего: 10



Цитата(chipset @ 28.3.2005, 10:52)
Dark Elf, хм, оригинально - сравнивать VB6 и C++

Не я ж это придумал smile

Цитата(chipset @ 28.3.2005, 10:52)
Однако ж, BCB там нету..

Тогда вот тебе ещё статья (смотри итоговую таблицу в конце)
Альтернативные средства разработки для Windows
А также:
Кто сегодня самый шустрый-2?

Кто сегодня самый шустрый-3?

Это сообщение отредактировал(а) Dark Elf - 28.3.2005, 11:38


--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Alastis
Дата 28.3.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 15.11.2004
Где: Казахстан, Астана

Репутация: 4
Всего: 10



Итак, для тех, кому лень просматривать эти тесты - подытожим - VC выиграл у BCB в общем случае... что большинство и так уже давно зналиsmile


--------------------
Прости, что я говорю, когда ты меня перебиваешь.
PM MAIL WWW ICQ   Вверх
Nuzur
Дата 28.3.2005, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



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

И вероятность того что каждый может выигрывать в 1-м и проигрывать в другом. И что тогда сАмое вАжное.

Но я не против такого теста, только за smile


--------------------
Never again...
PM MAIL   Вверх
Dark Elf
Дата 29.3.2005, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 26.12.2003
Где: Брисбен

Репутация: 9
Всего: 10





--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
chipset
Дата 30.3.2005, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Хм. Поставил себе эклипс, и малость опупел от скорости g++ smile
Добавлено @ 00:07
Dark Elf, супер!


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Гость_Serg
Дата 23.4.2005, 18:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











  Вверх
S.A.P.
Дата 23.7.2005, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Давно пора ставить точку в этой теме.
Вобщем попробовал я скомпилировать boost и вот че вышло.

чо имеем:
1. Borland C++ Builder 6 (bcc32)
2. MinGW со всеми прибамбасами (mingw-gcc)
3. Microsoft Visual C++ 7.1 (cl)
4. Дистрибутив boost 1.32

Как тестировал:
Копировал boost в отдельные папки для каждого компилятора (мало ли чего). Для чистоты эксперимента компилил jam на том же компиляторе, на чем и тестировал.
Пытался так же скомпилить на Intel C++ 8.0, ничего путного не вышло (может руки кривые). Для всего этого дела создавал батник, где в конце записывал time \t, чтобы можно было запомнить время и спокойно идти курить. Компилил с опциями bjam "-sTOOLS=compiler" stage. Замерял скорость компиления и (на всяки случай) размеры получающихся DLL ок.

Borland C++ Builder 6
Справился быстрее всех – 11 минут. В ходе компиления сыпались непонятные ерроры, в результате чего модуль date_time не скомпилился. Общий размер DLL ок: Debug – 920 кб (рекорд! Хотя скорее всего плохой рекорд), Release – 894 кб.
Если исходить из того, что в Visual C++ модуль date_time занимает примерно 10% от общего объема, то можем грубо накинуть 10% ко времени компиления и размеру бинарников.

MinGW
Еще при компиляции jama дал понять, что работа будет серьезной и долгой. Результат – 20 минут. Размеры либ: Debug – 16,9 мб (!), Release 2,04 мб (! тоже). Скомпилил все путево, было несколько варнингов, но в целом зачот.

Microsoft Visual C++ 7.1
Время компилиния 15 минут. Размеры либ: Debug – 1,11 мб, Release 664 кб (зачот!). Скомпилил все, бальшой зачот!

Итоги:
Borland C++ Builder 6 показал отличную скорость компиления и приемлимый размер, но для портирования вряд ли подойдет (сейчас прибежит Игнат и будет бросаться помидорами).

MinGW Скорость компиления и размеры просто ужос. Однако сгодится для написания многоплатформенных приложений.

Microsoft Visual C++ 7.1 - the best!.

Все вышенаписанное ИМХО.

Это сообщение отредактировал(а) Perchilla - 23.7.2005, 18:25
PM MAIL   Вверх
Ignat
Дата 24.7.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Цитата(Perchilla @ 23.7.2005, 19:23)
сейчас прибежит Игнат и будет бросаться помидорами

Гнилыми.


Цитата(Perchilla @ 23.7.2005, 19:23)
В ходе компиления сыпались непонятные ерроры, в результате чего модуль date_time не скомпилился.

Вот закопипастил бы ерроры, тогда можно было бы говорить, о том, что билдер гонит. А так, нужно посмотреть.
Какого хоть плана ошибки?


--------------------
Теперь при чем :P
PM   Вверх
Void
Дата 25.7.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(Ignat @ 24.7.2005, 22:14)
Вот закопипастил бы ерроры, тогда можно было бы говорить, о том, что билдер гонит. А так, нужно посмотреть.
Какого хоть плана ошибки?

Можно посмотреть на regression tests:
http://engineering.meta-comm.com/boost-reg...me_release.html

Борландовский компилятор действительно не блещет в плане advanced C++, чего уж тут...


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Ignat
Дата 27.7.2005, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Void, в колонке metacomm и VC7.0 не блещет.
не объективно как-то.


--------------------
Теперь при чем :P
PM   Вверх
Void
Дата 27.7.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Ignat
Объективно: все компиляторы, кроме Comeau - сакс, но Intel 7.1+, VC 7.1+ и GCC 3+ тоже ничего smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1062 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.