Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 849
1

Почему программа на Lazarus работает быстрее, чем на C++Builder?

30.01.2015, 09:04. Просмотров 2447. Ответов 23
Метки нет (Все метки)


Здравствуйте!
Вопрос выкладываю на два форума - C++Builder и Lazarus.
Это, пожалуй, не вопрос, а результат эксперемента.
И так, получил задание перевести программу, написанную на C++Builder XE6 в Lazarus. Переписал код с C++ на Pascal, запускаю - не работает. А программа, в принципе, простейшая - получает от внешнего устройства через COM-порт запрос, обрабатывает его и отвечает. Несколько дней искал причину, пока не подключил цифровой осциллограф. Оказалось, что программа, написанная на Lazarus, обрабатывает сообщение за 0,004 сек, а на C++ - за 0,053 сек. Поставил в Lazarus-е Sleep(50) - заработало. Оказалось, что внешнее устройство не успевает так быстро переключаться с передачи на приём (Южно-Карейский пульт управления газораздаточной колонкой). Вывод: "крутая" и, надо сказать, далеко не дешовая среда разработки - C++Builder XE6 уступает по быстродействию бесплатной более чем на порядок.
Больше ничего говорить не буду, хотелось бы услышать ваше мнение...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2015, 09:04
Ответы с готовыми решениями:

Обычный код чтения файла на VB6 работает намного быстрее, чем на VB2005 ! ПОЧЕМУ ?
Переделал прогу с VB6 на VB2005. Она стала работать намного медленнее. Нашел фрагмент кода -...

Почему код, написанный на С++, в разы быстрее работает с большим объемом памяти, чем с маленьким?
Привет! Понадобилось мне сравнить скорость работы идентичных алгоритмов на Fortran и C++. Алгоритм...

в чем ошибку,почему программа не работает
нужно создать массив,длинной n,n-задать с клавиатуры и сдвинуть его на k элементов в права ...

Почему FX-6300 быстрее чем FX-4300?
Выбираю недорогой процессор для игр, ориентируюсь на тактовую частоту. У FX-4300 частота выше. Цена...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
23
4197 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
30.01.2015, 09:11 2
Цитата Сообщение от shyub Посмотреть сообщение
далеко не дешовая среда разработки - C++Builder XE6 уступает по быстродействию бесплатной более чем на порядок.
Ни билдер, ни лазарус быстродействия не имеют, это параметр "железа".
1
4197 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
30.01.2015, 09:26 3
Быстродействие - параметр "железа", ни билдер, ни лазарус его вообще не имеют.
0
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 849
30.01.2015, 09:37  [ТС] 4
Имеется ввиду быстродействие программ, написанных на C++Builder и Lazarus. Код один и тот же, а выполняется по разному.
"Железо" одно и тоже.
0
4197 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
30.01.2015, 09:42 5
Они быстродействия тоже не имеют.
0
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 849
30.01.2015, 09:42  [ТС] 6
В принципе вы правы, однако, быстродействие имеет код, написанный в этих средах, что собственно, я имел ввиду. "Железо" одно и то же.
0
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 849
30.01.2015, 09:47  [ТС] 7
вы знаете, но я как-то привык доверять приборам.
0
Модератор
3475 / 2599 / 740
Регистрация: 19.09.2012
Сообщений: 7,965
30.01.2015, 09:51 8
Быстродействие приложения, да и его стабильность в значительной степени зависят от кривизны рук программиста, а не от среды разработки.
Одно из основных преимуществ Builder'а в быстроте и удобстве создания и отладки приложений, а не сверх быстродействие получаемого кода (хотя эта задача тоже решаема).

Касаемо описанной ситуации, бессмысленно делать какие-либо далеко идущие выводы не видя кода.
Может компонент, использованный в Builder'е учитывает скорость работы СОМ-порта и ведет обмен корректно, чтобы не надо было в "мега быстрый" код слипы пихать)
1
4197 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
30.01.2015, 09:59 9
Цитата Сообщение от shyub Посмотреть сообщение
В принципе вы правы, однако, быстродействие имеет код, написанный в этих средах,
Не имеет.
0
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 849
30.01.2015, 10:03  [ТС] 10
Компоненты не использовались. Работа с портом на Win-API. Код один и тот же. Разве что вместо "{....}" написал "begin....end" и прочее (вместо if{...} if...then begin...end и т.п.) Код выкладывать нет смысла, т.к. без "железа" (пульт) вы проверить не сможете.
0
4197 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
30.01.2015, 10:20 11
Цитата Сообщение от shyub Посмотреть сообщение
вы знаете, но я как-то привык доверять приборам
И какое это имеет отношение к мифическому "быстродействию" софта? Быстродействие - это количество операций, которые процессор выполняет в единицу времени. От тактовой частоты отличается тем, что на одну операцию может расходоваться больше одного такта. Поэтому из-за неизбежных обращений к памяти характеризует не отдельно процессор, а всю машину, так как учитывает и количество тактов на одно чтение данного и/или кода операции из памяти и на одну запись данного в память. Производительность программы характеризуется другими параметрами. Это может быть и скорость счёта, и время исполнения, но не быстродействие. Если на одной машине в разное время запустить две разные программы, делающие одно и тоже, но по-разному, то количество пользовательских задач, решаемых в единицу времени, может различаться, а количество операций процессора в единицу времени будет постоянным с той точностью, с какой вообще известно быстродействие данной машины даже под управлением только одной из двух программ. Одна программа может и порт переключать за время, отличающееся от времени переключения другой программой, но и за разное количество операций процессора, а количество операций процессора в единицу времени совпадёт всё равно.

Добавлено через 8 минут
Цитата Сообщение от shyub Посмотреть сообщение
Имеется ввиду быстродействие программ, написанных на C++Builder и Lazarus. Код один и тот же, а выполняется по разному.
"Железо" одно и тоже.
Код не может быть одним и тем же. Во-первых в разных средах разные компиляторы. Во-вторых все станадртные компоненты лазаруса - результат обратной разработки, их код не может совпадать с VCL-ловым оригиналом, иначе лазарус вообще было бы запрещено распространять (обвинили бы в плагиате). В-третьих он не совпадает по факту и именно поэтому различается скорость счёта.

Добавлено через 1 минуту
Цитата Сообщение от FIL Посмотреть сообщение
Одно из основных преимуществ Builder'а в быстроте и удобстве создания и отладки приложений
Чёрта с два.
0
Модератор
3475 / 2599 / 740
Регистрация: 19.09.2012
Сообщений: 7,965
30.01.2015, 10:26 12
Цитата Сообщение от shyub Посмотреть сообщение
Работа с портом на Win-API.
Теоретически, данный проект можно скомпилировать в Visual Studio - это будет более корректная проверка.
И если он будет работать на порядок быстрее (именно работать), то Builder'у уже не отвертеться)
0
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 849
30.01.2015, 11:03  [ТС] 13
Цитата Сообщение от FIL Посмотреть сообщение
Одно из основных преимуществ Builder'а в быстроте и удобстве создания и отладки приложений
Могу сказать, что язык С - мне на много ближе, чем Pascal, тем более основная моя деятельность - это разработка микропроцессорных систем, а там до сих пор ничего лучшего, чем Assembler и С пока не видел... Переход с C++Builder на Lazarus - "волевое" решение руководства, связанное с нежеланием тратить средства на покупку лицензии. (Для контроллерного ПО старое руководство купило лицензии.)
Но, в принципе, вопрос не об этом. Код, написанный на бесплатном Lazarus-е меньше нагружает "железо" и работает быстрее. К стати, аналогичные эксперементы проводил на C++Builder XE6 и Lazarus 1.3 под Android. Apk-файл на С++Builder получился около 5 МБ, а на Lazarus - 1,5 МБ (функционал одинаковый, но так сказать "для читоты эксперемента" тот же apk-файл, написанный на Qt, "весил" около 20МБ).
Вы можете возразить, что "железу" сейчас "пофигу": то ли 20МБ, то ли 1,5 МБ. Осмелюсь возразить: быстродействие и размер кода всегда имел и будет иметь значение.
Цитата Сообщение от FIL Посмотреть сообщение
Одно из основных преимуществ Builder'а в быстроте и удобстве создания и отладки приложений
Вы знаете, особой разницы не почувствовал. Чисто субъективное мнение - "затрахали" begin-end вместо скобок, не нравится отсутствие стилей, зато возможность писать под Linux, что (лично мне) на много нужнее, чем MAC OC. Смысла спорить. что лучше - нет. Просто при создании темы приввёл цифры, а решать вам.
На счёт "кривых рук" - так одни и те же руки писали в обоих средах...

Добавлено через 4 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
количество операций, которые процессор выполняет в единицу времени
Вот мы с вами и подошли к общей точке зрения. Так почему C++Builder "заставляет" процессор выполнять на много больше и при том, заметьте, не нужных для данной задачи операций, чем Lazarus?

Добавлено через 4 минуты
Цитата Сообщение от FIL Посмотреть сообщение
Теоретически, данный проект можно скомпилировать в Visual Studio - это будет более корректная проверка.
И если он будет работать на порядок быстрее (именно работать), то Builder'у уже не отвертеться)
К большому сожалению не могу, нет у меня студии...
0
FIL
30.01.2015, 11:13
  #14

Не по теме:

Цитата Сообщение от shyub Посмотреть сообщение
На счёт "кривых рук"
Я в общем смысле. Ничего личного :)

0
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 849
30.01.2015, 11:14  [ТС] 15
Не обижаюсь, "проехали".
0
4197 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
30.01.2015, 11:46 16
Цитата Сообщение от shyub Посмотреть сообщение
На счёт "кривых рук" - так одни и те же руки писали в обоих средах...
Так именно это и используется для демонстрации недостатков ненавистного языка: использую один и те же руки написать на любимом языке хорошо, а на ненавистном криво и потом сравнивать. Неосознанно ли эта кривизна вносится, или по не знанию того, как на данная задача должна решаться на этом языке, значения не имеет, важно то, что текст по факту кривее.

Добавлено через 3 минуты
Цитата Сообщение от shyub Посмотреть сообщение
Вот мы с вами и подошли к общей точке зрения. Так почему C++Builder "заставляет" процессор выполнять на много больше и при том, заметьте, не нужных для данной задачи операций, чем Lazarus?
В случае лазаруса Вы намеренно привели прогу к тому же, чтоб она хоть как то работала.
0
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 849
30.01.2015, 12:32  [ТС] 17
Цитата Сообщение от taras atavin Посмотреть сообщение
Так именно это и используется для демонстрации недостатков ненавистного языка: использую один и те же руки написать на любимом языке хорошо, а на ненавистном криво и потом сравнивать.
Круто, слов нет.
Bilder - для меня лет так 10 или даже больше - базовый. До этого был Turbo С++. Не в коем случае не хочу обидеть его разработчиков, но явные вещи не могу не заметить.
На счёт "кривых рук", так скорее на Lazarus-е я понаделаю кучу ошибок, чем на "родном,
Цитата Сообщение от FIL Посмотреть сообщение
Одно из основных преимуществ Builder'а в быстроте и удобстве создания и отладки приложений
огучем..."
0
4197 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
30.01.2015, 12:36 18
Цитата Сообщение от shyub Посмотреть сообщение
Круто, слов нет.
Bilder - для меня лет так 10 или даже больше - базовый. До этого был Turbo С++. Не в коем случае не хочу обидеть его разработчиков, но явные вещи не могу не заметить.
На счёт "кривых рук", так скорее на Lazarus-е я понаделаю кучу ошибок, чем на "родном,
Перейдя с бейсика на паскаль я на паскале через 3 дня писал лучше, чем на бейсике, который учил полгода. Перейдя с паскаля на c++ через два дня кривее писал на паскале, чем на c++ и чем раньше на паскале. Шотя на паскале писал с 1995-го года где то лет 7.
0
Практикантроп
4676 / 2597 / 495
Регистрация: 23.09.2011
Сообщений: 5,573
30.01.2015, 12:50 19
Думаю, что таким образом сравнивать - только возбуждать повод для споров. Напишете на ассемблере под ДОС программу обработки - тоже без специальной задержки устройство не будет успевать обрабатывать. А сравнивая удобства при программировании на ассемблере - и в Builder'е... - ответ, на мой взгляд, очевиден.
0
пофигист широкого профиля
4299 / 2818 / 797
Регистрация: 15.07.2013
Сообщений: 16,324
30.01.2015, 13:23 20
Цитата Сообщение от shyub Посмотреть сообщение
Код выкладывать нет смысла, т.к. без "железа" (пульт) вы проверить не сможете.
Смысл есть. Чтобы увидеть как выполнено чтение из порта, обработка прочитанного и отправка ответа железо не нужно.
А не видя кода тут можно только холиварить по поводу разных языков программирования.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2015, 13:23

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

C# работает быстрее чем С++
имеется файл типа 6 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4...

C программа компилируется быстрее чем C++
Почему программа на C компилируется быстрее чем на С++?

Почему данный код работает в builder 6 а в builder 10 не работает?
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_LAYERED);...

Почему ракета не может разогнаться быстрее, чем её двигатель выбрасывает газ?
Или если по-другому - почему ракета не может разгоняться до почти скорости света? Допустим,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.