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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "Скорость" Delphi 
:(
    Опции темы
kemiisto
Дата 24.3.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Mayk, вот нашел:
Цитата(Бьярн Страустрап. Введение в язык Си++)

Следует заметить, что в C++ макросы гораздо менее полезны, чем в C, поскольку C++ имеет такие языковые конструкции, как const для определения констант и inline для исключения расходов на вызов функции.

Возможность определения констант была в Delphi всегда, а директива inline - начиная с Delphi 2005. Выходит, можно обойтись без макросов?



--------------------
PM MAIL WWW GTalk Jabber   Вверх
Beltar
Дата 24.3.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В .NET их просто нет. smile MS сказала: "Макросы - зло" smile


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Lazin
Дата 24.3.2008, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(Beltar @  24.3.2008,  13:27 Найти цитируемый пост)
MS сказала: "Макросы - зло"

ты наверное windows.h не видел  smile 
Цитата(kemiisto @  24.3.2008,  13:10 Найти цитируемый пост)
Возможность определения констант была в Delphi всегда, а директива inline - начиная с Delphi 2005.

Не нужно путать С и С++, возможность определения констант в С++ то-же была всегда, а директива inline считается устаревший, так как решать что должно быть inline а что нет должен компилятор а не программист(хотя возможно Delphi программисты настолько могучи, что сами могут определить что должно быть inline а что нет smile ).
И вообще одна и та-же функция в одном месте может быть заинлайнена, а в другом нет, так что смысла в этой директиве нет))
PM MAIL Skype GTalk   Вверх
Beltar
Дата 24.3.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

хотя возможно Delphi программисты настолько могучи, что сами могут определить что должно быть inline а что нет


Ф-яя очевидно м/б с пользой заинлайнена если:
1) вызывается всего в одном месте.
2) Вызывается в цикле.  smile 
Или Си-приграммисты глупее своего компилятора. smile 
Программист на Delphi решает имеет-ли смысл заинлайнить, а компилятор решает можно ли это сделать. Инлайнить же или нет какой-нить sin(x) из библиотеки, который вызывается в данной конкретной программе в 65826844 местах уже другой вопрос.

Цитата

ты наверное windows.h не видел 


Не видел, (или видел, но было пофиг) но я не про него, а про .NET и в первую очередь C#.

Это сообщение отредактировал(а) Beltar - 24.3.2008, 14:58


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Lazin
Дата 24.3.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(Beltar @  24.3.2008,  14:57 Найти цитируемый пост)
Не видел, (или видел, но было пофиг) но я не про него, а про .NET и в первую очередь C#.

так ведь в С# есть препроцессор, очень похожий на Си-шный)))
PM MAIL Skype GTalk   Вверх
AlexxxM
Дата 24.3.2008, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Lazin @ 24.3.2008,  13:57)
директива inline считается устаревший, так как решать что должно быть inline а что нет должен компилятор а не программист(хотя возможно Delphi программисты настолько могучи, что сами могут определить что должно быть inline а что нет smile ).


Все теперь только Copy/Paste   smile

А я то наивный думал что именно программист и решает 
Цитата
что должно быть inline а что нет

PM MAIL   Вверх
MAKCim
Дата 24.3.2008, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(AlexxxM @  24.3.2008,  19:09 Найти цитируемый пост)

А я то наивный думал что именно программист и решает 

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



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
CompWorm
Дата 25.3.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


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

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



так я не понял, относительно только дельфей:
1) лучше программировать под .NET или просто D7
2) чьи проги из них быстрее (если считать с GUI)
3) чьи проги из них быстрее (если считать без GUI)

?   ?    ?


Это сообщение отредактировал(а) CompWorm - 25.3.2008, 21:19


--------------------
PM MAIL   Вверх
Lazin
Дата 26.3.2008, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



а что значит быстрее, и зачем тебе вообще нужна "скорость"

вообще Delphi какой-то несексуальный, так что ну его в баню  smile 
PM MAIL Skype GTalk   Вверх
JackYF
Дата 26.3.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Lazin @  24.3.2008,  12:57 Найти цитируемый пост)
а директива inline считается устаревший

ух ты! а пруфлинк можно?

CompWorm, ты что, до сих пор хочешь однозначный ответ? Типа там "Delphi круче С++, C# круче Delphi"? smile 


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
bems
Дата 26.3.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 0
Всего: 88



Цитата(Beltar @  24.3.2008,  12:58 Найти цитируемый пост)
Графику можно начальную фигуру мышкой по сетке набирать. В принципе при 100х100 можно попробовать вывести и конец
тут нужно ждать мышку, а значит к скорости не имеет отношения. Фтопку графику. Давайте лучше так:

Есть входной текстовый файл с начальным раскладом. Пробел - свободное место, конец строки в стиле DOS, все остальные символы - клетки. Размер поля определяется количеством строк и длиной самой длинной строки. Требуется написать нативную консольную прогу, которая должна спросить в консольном окошке количество поколений, вывести конечную ситуацию в выходной файл, и время которое занял ращет (без работы с файлами) в консольное окно. Максимальный размер поля 1000х1000, но ничего не мешает прогонять это потом на файлах меньшего размера (100х100 как вы хотели). 

Если такое условие устраивает то давайте определимся как отмерять время - чтобы у всех были одинаковые погрешности. имхо для большого количества поколений разность двух GetTickCount вполне покатит.



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Lazin
Дата 28.3.2008, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



JackYF, Герб Саттер, Новые сложные задачи..  smile 
PM MAIL Skype GTalk   Вверх
JackYF
Дата 28.3.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Lazin @  28.3.2008,  07:54 Найти цитируемый пост)
Герб Саттер, Новые сложные задачи..

Э нет. Мне в стандарте, пожалуйста smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Mayk
  Дата 28.3.2008, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Ради смеха сделал простую реализацию life на паскале для  поля 10 на 10 (извинте, на большее не хватило). На неё поместилл две "вертушки". и сделал 1 000 000 поколоений.  И оттранслировал её в си. а потом замерил время выполнения программ скомпилированных паскалевскими компиляторами с временем выполнения си-шной программы которую транслятор получил из паскалевской программы.

В забеге принимали участие:
fpc [версия free pascal compiler 2.0.4]
gpc [версия gpc 20060325, based on gcc-3.4.6 (Ubuntu 3.4.6-6ubuntu2)]

и гвоздь программы: транслятор с паскаля на си
p2c [версия 1.21alpha-07.Dec.93]

Результаты. Время указано в секундах для выполнения всей программы. 
FPC:
Цитата(выдержка из life.fpc.bench)

real 27.85
real 27.71
real 27.53
real 27.49


GPC:
Цитата(выдержка из life.gpc.bench)

real 19.94
real 19.29
real 18.76
real 18.72


а теперь внимание --- результат оттранслированного кода из паскаля в си
Цитата(выдержка из life.p2c.bench)

real 3.28
real 3.36
real 3.29
real 3.48


вывод: писать в юнихе на паскале -- не комильфо.

проект полностью в аттаче вместе с бинарниками [правда бинарники там для amd64]


зы. правдо замечу что сишный файл компилировался более свежим компилятором: 
gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2). 


Это сообщение отредактировал(а) Mayk - 28.3.2008, 21:53

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  life.tar.bz2 146,89 Kb


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Lazin
Дата 31.3.2008, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(JackYF @  28.3.2008,  13:54 Найти цитируемый пост)
Э нет. Мне в стандарте, пожалуйста

Стандартом предусмотрено, что компилятор может применять любые оптимизации, которые не нарушают логику работы программы,.. собственно вот и все  smile 

Mayk, что и требовалось доказать  smile , правда FPC это не совсем Delphi, но думаю(хоть у меня на это и нет особых оснований) особой разницы не будет  smile 
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




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


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

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