|
|
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
Прожужжали мне помашь уши... якобы FP компилер делает чудовищно быстрые экзешники (относительно гну сей). Вот. Удосужился проверить сей "факт" на простой задаче: Given the list of numbers, you are to sort them in non decreasing order. Input: t – the number of numbers in list, then t lines follow [t <= 10^6]. Each line contains one integer: N [0 <= N <= 10^6] Output: Output given numbers in non decreasing order. Time Limit: 5s. Паскаль решение. Упорно не укладывается в тайм лимит! Размер экзешника: 16 KB. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. C/C++ решение ("алгоритм" идентичен паскалевскому). Время: ~2s. Размер экзешника: 3.50 KB. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2005, 20:44 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
начинается. шаг в сторону от темы - стреляю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2005, 04:55 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
Рыт...якобы FP компилер делает чудовищно быстрые экзешники (относительно гну сей). 1) Хм.. ну я бы сказал что это сильно зависит от опций компиллятора. Приведите ключи командной строки для FP и CPP. Рыт ..."алгоритм" идентичен паскалевскому... 2) По моему fscanf(...) не является аналогом readln(...). То-же я-бы сказал про вывод. Инициализация массивов нулями выполняется уж слишком по разному. 3) До выполнения метода main могут срабатывать загрузчики, статические конструкторы и пр. штуки, которые искажают временную картину. Следует учесть это. Неплохо-бы глянуть asm -овские сорсы. Это многое прояснит. Я - бы взял более сложный алгоритм с меньшим количеством ввода-вывода и большим временем работы. Вообще-то данный тест достаточно субъективен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2005, 13:56 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
C++ programs are compiled this way: Код: plaintext 1. 2. 3. Фри Паскаль и его четыре директивы {$I-,Q-,R-,S-}: отключение проверок входных данных, переполнения, границ массивов и стека. По-моему, это максимум что можно сделать для ускорения будущего экзешника. >Инициализация массивов нулями выполняется уж слишком по разному. Я же дал ФП фору! fillchar работает намного быстрее брутального Код: plaintext 1. >Неплохо-бы глянуть asm-овские сорсы. Это многое прояснит. Ой. >Я бы взял более сложный алгоритм с меньшим количеством >ввода-вывода и большим временем работы. Возьмем задачу BSHEEP - поиск выпуклой оболочки (и ее длины) множества точек на плоскости. Там много вычислений помимо ввода-вывода. Смотрим ее best solutions: http://spoj.sphere.pl/ranks/BSHEEP/ И что мы видим? Одни только С-решения! Как мне (ZZZ) удалось занять там 4-е место со своим ФПаскаль-кодом? Только потому что я заюзал свой собственный самопальный алгоритм. Если бы я юзал более-менее стандартный алгоритм, то меня бы там не стояло (на 1-й странице best solutions). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2005, 21:18 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
Рыт Возьмем задачу BSHEEP - поиск выпуклой оболочки (и ее длины) множества точек на плоскости. Там много вычислений помимо ввода-вывода. Смотрим ее best solutions: http://spoj.sphere.pl/ranks/BSHEEP/ И что мы видим? Одни только С-решения! Как мне (ZZZ) удалось занять там 4-е место со своим ФПаскаль-кодом? Только потому что я заюзал свой собственный самопальный алгоритм. Если бы я юзал более-менее стандартный алгоритм, то меня бы там не стояло (на 1-й странице best solutions). Вы достигли эффекта путем улучшения оценки временной сложности BSHEEP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 09:46 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
Ну да. Типа этого. У большинства сишных решений сложность = O(n*log(n)), а у меня она равна (приблизительно) 0.25*O(n*log(n)). Т.е., если бы я юзал их алгоритм, но на ФПаскале, то мое время было бы не 1.29 с, а ~ 5 секунд. >По моему scanf(...) не является аналогом readln(...). Ес-но, на "молекулярном" уровне - это разные вещи, но по сути - это одно и то же. И вот загадка: что мешает автору FP компилера сделать read() таким же быстрым как и scanf()? (если он быстрее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 10:46 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
РытНу да. Типа этого. У большинства сишных решений сложность = O(n*log(n)), а у меня она равна (приблизительно) 0.25*O(n*log(n)). Ну .. обычно при сравнении алгоритмов константу перед формулой не учитывают. Она определяется только реализацией. То есть, если я возьму и использую свои знания в ассемблере и создам собственную реализацию BSHEEP - то я как минимум буду стоять выше вас по рейтингу? Но делать этого я не буду потому-что: 1) лень. 2) мне это неинтересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 11:05 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
maytonНо делать этого я не буду потому-что: 1) лень. 2) мне это неинтересно. Весьма знакомые чуйства. Я прямо-таки содрогаюсь, глядя на свои 100 строк кода (весьма убористым "почерком"; при нормальном форматировании их будет не меньше 200) задачи BSHEEP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 11:48 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
Ну чё господа-коллеги...... загадка разгадана: https://spoj.sphere.pl/forum/viewtopic.php?t=3162 Плохо конечно что в наше время чудес почти не бывает. Без чудес жизнь человека превращается в чудовищный фарс. Я вот шел сегодня мимо пятиэтажек; возле них растут яблони. И какие-то молодые тетки и их сынки-подростки трусили яблоки. Дык я что тогда подумал: вид человека, пихающего туда-сюда яблоню... 10000 лет прошло, а как был человек гамадрилой так ею и остался. Хоть ты ему 10 мобил к поясу привяжи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 23:40 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
РытНу чё господа-коллеги...... загадка разгадана: Для меня загадка, когда FP стал быстрым. Когда я его смотрел, пару лет назад, он делал не просто тормозной, а чудовищно тормозной код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 17:13 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
Рыт, а почему Вы а)на Си использовали 3-й уровне оптимизации, а на free pascal нет? для чистоты эксперимента необходимо создавать равные условия, а не те которые Вам нравятся. Или и там, и там -О2, или и там , и там нет(вообще-то, надо оба уровня сравнить). б) как Вам уже сказали, до самого кода выполняются, различные иниты и прочее(однажды, я видел пример на Ада, и комментарии(специалиста) : смысл заключался в том, что на Ада программы стартуют дольше, потому, что много инициализации проводят сразу, зато потом работают быстрее, так как в процессе уже ничего инициализировать не надо, все уже есть готовое. Из этого вывод: надо было запускать счётчик, когда доходит до Вашей процедуры, и останавливать перед выходом. И приоритет(если Вы не в RTOS работаете) ставить realtime. И вот только при реализации этих условий Вы можете говорить о КАЧЕСТВЕННОМ СРАВНЕНИИ СКОРОСТИ РАБОТЫ ГЕГНРИРУЕМОГО КОМПИЛЯТООАМИ КОДА. А если Вы считаете, что Вы все сделали правильно, тогда Вы -сраный холиварщик, не гнущающийся стремными методами! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2016, 21:11 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
Мимо проходящий читательсмысл заключался в том, что на Ада программы стартуют дольше, потому, что много инициализации проводят сразу, зато потом работают быстрее, так как в процессе уже ничего инициализировать не надо классный бред ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2016, 22:37 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
С новым годом братия. Over 10 лет прошло. Да и Рэт уже не торт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2016, 22:58 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
РытПрожужжали мне помашь уши... якобы FP компилер делает чудовищно быстрые экзешники (относительно гну сей). он делает не "чудовищно быстрые экзешники", а "делает чудовищно быстро экзешники относительно гну сей". GCC же наоборот очень небыстрый компилятор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2016, 07:28 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
ИзопропилМимо проходящий читательсмысл заключался в том, что на Ада программы стартуют дольше, потому, что много инициализации проводят сразу, зато потом работают быстрее, так как в процессе уже ничего инициализировать не надо классный бред аргументируй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2016, 21:50 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
maytonС новым годом братия. Over 10 лет прошло. Да и Рэт уже не торт. при этом главный вывод из поста некроманта - правильный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2016, 21:51 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
tchingizИзопропилпропущено... классный бред аргументируй что там такого особенного инициализировать, чтоб запуск приложения замедлить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2016, 22:40 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
Изопропилtchingizпропущено... аргументируй что там такого особенного инициализировать, чтоб запуск приложения замедлить? я не знаю ниодного ассемблера, но дебаг версия си инициализирует автоматическую память там чемто, а релиз - нет. Значит дебаг, теоретически, медленее работает. Наверно, можно чегото сделать в статической памяти. а ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2016, 18:22 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
а аду я не знаю. У них были какие то модули, или пакеты - может их можно по разному инициализировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2016, 18:23 |
|
||
|
GNU C/C++ vs. Free Pascal
|
|||
|---|---|---|---|
|
#18+
Тестили скорости , топик на 30 страниц, вот промежуточные результаты 18131400 free паскаль вдвое медленнее плюсов, и не только плюсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2016, 20:41 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39150162&tid=1340817]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 525ms |

| 0 / 0 |
