![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Fr3dd0 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 29.4.2011 Репутация: нет Всего: нет |
Меня всегда мучил вопрос, какой компилятор, Visual C++ или Delphi, лучше. Для сравнения реализовал алгоритм Плейфера на Visual C++ MFC и Delphi (кто не знает, алгоритм плейфера - это алгоритм шифрования текста). Результат у меня вышел таков:
Алгоритм, реализованный на Delphі, работает на много быстрее, что очень удивило меня. Текст длиной в 16000 символов в Делфи зашифровывается примерно за 1.38с, а в С++ за та же работа выполняется за 3 секунды. Может кто нибудь подскажет почему такая существенная разница? |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Fr3dd0,
2 куска кода в студию и более точные версии компиляторов + систему оценки. |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: нет Всего: 37 |
Вариант С++ релизный с оптимизацией по скорости?
|
|||
|
||||
| Fr3dd0 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 29.4.2011 Репутация: нет Всего: нет |
Предоставляю вашему вниманию два варианта программы: на C++ і Delphi.
Sartorius, я в этом вопросе не компетентен. Единственное знаю - используется Microsoft Visual C++ 2008 и Borland® Delphi® for Microsoft® Windows™ Version 10.0.2288.42451 Присоединённый файл ( Кол-во скачиваний: 9 )
tt.zip 429,67 Kb |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Fr3dd0 Скажу вам так, истинный мастер кунг-фу знающий как компилятор транслирует компилятор те или иные конструкции в машинный код напишет так что скорость будет почти одинаковой. Но, все таки компилятор Visual C++ немножко умнее. На самом деле разница будет не более 20%. Так что, не парьтесь на счет языка и пишите на том, что лучше знаете.
Добавлено через 5 минут и 34 секунды P.S. глянул на код. На самом деле вы просто неэффективно работаете со строками (не оптимально по скорости). В делфи работа со строками максимально оптимизирована + намного быстрее работает менеджер кучи. Победа по скорость только за счет этого. Если вы уберете из алгоритма операции работы с кучей или хотя бы минимизируете их, то оба алгоритма ускоряться раз в 10 и приблизятся по скорости. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Fr3dd0 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 29.4.2011 Репутация: нет Всего: нет |
Если можно, с этого места поподробней - как работать со строками эффективней, как убрать с алгоритма операции работы с кучей и т.д.? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Операции конкатенации строк, удаления символов, вызывают перераспределение памяти. В С++ даже при присваивания строк производят операции выделения памяти и копирования. В делфи копирование строк без изменения содержимого не приводит к обращению к куче.
Проще всего будет работать со строками в стиле С (с точки зрения написания быстрого кода). Можно быстро работать и с std::string, используя итераторы. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Fr3dd0 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 29.4.2011 Репутация: нет Всего: нет |
Ах да, забыл сообщить важный факт.... В отличии от "делфинской", "С++"-я программа не может справится с текстом длиной в 1 000 000 символов... Программа как бы считает, процессор загружен, но это длится очень долго и приходиться снимать процесс, не дожидаясь желанного результата.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |