Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Время выполнения алгоритма на С++ и Делфи


Автор: Fr3dd0 27.6.2011, 22:38
Доброе время суток, уважаемые программисты. Вашему вниманию представляется реализация шифра Плейфера на C++ и Делфи. Интересен тот факт, что данный алгоритм работает в Делфи по крайней мере в 2 раза быстрее чем на С++, при том, что многие программеры считают С++ быстрее. Почему такое контраст вышел именно в этом примере? Подскажите также, пожалуйста, литературу по этому вопросу, может кто-то уже сталкивался с подобным... Спасибо за внимание!!! 

Автор: Fr3dd0 27.6.2011, 22:40
------------

Автор: volatile 28.6.2011, 02:19
Вообще говорить о скорости языка, не имеет смысла. Можно говорить только  скорости реализации, данного языка, на каком-то конкретном компиляторе.
А уж делать выводы о скорости языка, на каком-то левом примере, неизвестно кем и когда написанным, мягко говоря не корректно.

Цитата(Fr3dd0 @  27.6.2011,  22:38 Найти цитируемый пост)
работает в Делфи по крайней мере в 2 раза быстрее чем на С++, при том, что многие программеры считают С++ быстрее

Это все равно что придти на форум музыкантов, и задать вопрос.
Вот я на пианино умею играть чижик-пыжик, и всё.
А на дудке могу целых 5 мелодий.
Из этого делаю вывод, что дудка в 5 раз универсальнее пианино.
И, типа, убедите меня что это не так.


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

Автор: Fr3dd0 28.6.2011, 02:22
наконец нашел причину, которая тормозила С++ ний вариант программы. В основном алгоритме зашифровки в условии цикла было (while k<text1.GetWindowTextLengthA()), где переменная text1 принадлежит классу CEdit. Тогда я попробовал другой вариант:
(while k<MyText.GetLength()), где переменная MyText принадлежит классу CString.
После этого программа стала работать примерно в 10 быстрей, чем программа на Делфи.

Отсюда можно сделать вывод, что методы класса CString на много эффективней методов класса CEdit? Кто-то может поделиться какими-то соображениями по єтому поводу? 

Автор: volatile 28.6.2011, 02:43
Цитата(Fr3dd0 @  28.6.2011,  02:22 Найти цитируемый пост)
можно сделать вывод, что методы класса CString на много эффективней методов класса CEdit

методы CEdit - это работа с дочерним окном посредством сообщений. Это, кстати, вообще к языку отношения не имеет. Сообщения помещаются в очередь виндой, и сколько там пройдет времени, пока оно отработает, неизвестно.
методы CString - это работа со строками, практически напрямую. Сравнивать их не имеет смысла. Естественно что CString будет работать в разы быстрее.



Цитата(Fr3dd0 @  28.6.2011,  02:22 Найти цитируемый пост)
После этого программа стала работать примерно в 10 быстрей, чем программа на Делфи

из этого могу сказать только что и в Делфи у вас тоже все криво. smile 

Автор: Сыроежка 28.6.2011, 20:21
Цитата(Fr3dd0 @  28.6.2011,  02:22 Найти цитируемый пост)
наконец нашел причину, которая тормозила С++ ний вариант программы. В основном алгоритме зашифровки в условии цикла было (while k<text1.GetWindowTextLengthA()), где переменная text1 принадлежит классу CEdit. Тогда я попробовал другой вариант:
(while k<MyText.GetLength()), где переменная MyText принадлежит классу CString.
После этого программа стала работать примерно в 10 быстрей, чем программа на Делфи.

Отсюда можно сделать вывод, что методы класса CString на много эффективней методов класса CEdit? Кто-то может поделиться какими-то соображениями по єтому поводу?  


Я что-то совершенно не понял, то ли вы говорите о реализации именно алгоритма, то ли вы говорите про программированию интерфейса Windows! К языку С++ это никакого отношения не имеет.
Если вы действительно реализовали алгоритм, то причем здесь вообще Windows?! Как я понимаю, алгоритм не должен быть связан с операционгой платформой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)