VB vs C vs Delphi

Windows лучше чем Linux! Чем? Ясно же написано — чем Linux!
Раздуй свой холивар сегодня, потому что завтра это может сделать уже кто-то другой!
Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

VB vs C vs Delphi

Сообщение Mikle » 17.06.2006 (Сб) 16:04

А как же обойтись без главного HolyWar-ного вопроса всех времен и народов?
Я неоднократно встречал подобные темы на других форумах, причем за VB практически никто не выступает. Я поначалу верил, но...
Короче, я сам удивился, но на вычислительных задачах VB не просто достойно конкурирует, он впереди! Допускаю, что это из-за того, что я недостаточно хорошо владею C & D, чтобы действительно корректно перевести код, но получается, что так же слабо ими владеют и их защитники, которые вступали в спор, а потом, после результатов VB, куда-то терялись. Это уже сомнительно.
Со временем я стал замечать, что сторонники D, как правило, мухлюют, предлагая тест, рассчитанный на хваленый их менеджер памяти. Действительно, на какой-нибудь сортировке или поиске пути, основанных на рекурсии, D вырывается вперед, но если подобрать под задачу оптимальный алгоритм - выигрывает на нем уже B. Стоит наполнить рекурсию хоть небольшим вычислительным содержимым - B уже впереди, например при рисовании фрактала.
СИ-шники тоже мухлюют - они всегда стараются задать для теста алгоритм, который явно можно оптимизировать, и который, в принципе, является ошибкой программиста - тогда их хваленый (но медлительный) компилятор находит и оптимизирует эти ошибки. В проведенных тестах на алгоритмах, не нуждающихся в оптимизации (ну, почти :wink: ), выиграл B :shock: Только после использования интеловского компилера C вышел вперед.
На этом форуме люди достаточно уважают VB, но, надеюсь, здесь достаточно и людей, владеющих C & D. Может здесь удастся без лишних эмоций и переходов на личности провести эксперименты и сравнить быстродействие B, C & D?
"На второе", если все пройдет успешно, могу предложить развенчать еще один миф - о том, что, используя ассемблер, бесполезно тягаться с современными компиляторами.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 17.06.2006 (Сб) 17:05

Ты бы голосовалку прикрутил, что-ли :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 17.06.2006 (Сб) 17:13

BV
Так и знал, что ты первый ответишь :)
А зачем голосовалка? Вопрос решается прямым измерением, и статистика личных мнений тут не при чем. Я же не спрашиваю, какой язык самый удобный.

Денис Победря
Мегобойанист
Мегобойанист
 
Сообщения: 1037
Зарегистрирован: 03.01.2005 (Пн) 21:29
Откуда: Из Москвы

Сообщение Денис Победря » 17.06.2006 (Сб) 20:07

Я считаю, что для большинства прикладных задач вполне подходит ВиБи. Он прост и разработка на нём быстрая. Как в анекдоте: Пока сишник определяет константы, вибишник уже пьёт пиво. Что же касается Дельфи - не знаю, не пробовал.
Последний раз редактировалось Денис Победря 18.06.2006 (Вс) 20:34, всего редактировалось 1 раз.
[Место cдаётся]

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.06.2006 (Сб) 20:13

Кому не лень -- сравните по скорости LZW-декодеры :-)

Оригинальный сишный код гуглом находится с полпинка, мой перевод на VB -- лежит в проектах. Перевод на Паскаль я тоже видел.
Изображение

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 17.06.2006 (Сб) 20:36

По-моему это бесполезный спор. Каждый программирует на чём ему удобнее и возможности языка тут не причём. Есть люди, к-е на ВБ могут сотворить всё что угодно, есть очень продвинутые дельфисты или сишники. Здесь вопрос не в языке программирования, а способностях, знаниях и подготовленности (профессионализме одним словом) программиста. Язык - это всего лишь инструмент, а вот что программист сможет с помощью этого инструмента сотворить - это другой вопрос.

Вообще мне нравится Visual Basic (поэтому я здесь и нахожусь). Просто мне он нравится, мне в нем удобно, я к нему привык.
Подпись проходит рефакторинг

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.06.2006 (Сб) 20:56

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

(Чёрт возьми, во всём топике ни одного ответа в тему. Неужели все прочитали только название, а текст ниасилили?)
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 17.06.2006 (Сб) 21:30

[tyomitch'а в игнор, на неделю]
Последний раз редактировалось BV 17.06.2006 (Сб) 22:53, всего редактировалось 1 раз.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.06.2006 (Сб) 21:32

Не хочу показаться грубым, но "если нечего сказать, лучше промолчать" (с)
Изображение

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 17.06.2006 (Сб) 21:38

tyomitch писал(а):(Чёрт возьми, во всём топике ни одного ответа в тему. Неужели все прочитали только название, а текст ниасилили?)

Может потому что здесь (на этом форуме) подавляющее большинство хорошо знают ВБ и не очень Делфи и С? А тем, кто знает С/Делфи, просто лениво писать одно и то же на двух/трех языках и делать тесты.
tyomitch, начинай первый (наработки я понял у тебя уже есть), глядишь, за тобой и другие подтянутся :wink:
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.06.2006 (Сб) 22:15

VVitafresh писал(а):tyomitch, начинай первый (наработки я понял у тебя уже есть), глядишь, за тобой и другие подтянутся :wink:

Дык блин, всё же уже готово! ничего писать руками не надо!
Код на Си: http://www.soe.ucsc.edu/~kent/src/unzip ... ifdecomp.c
Код на VB: http://bbs.vbstreets.ru/viewtopic.php?p=66472#66472 (точный перевод)
Код на Паскале: http://www.bsdg.org/SWAG/GRAPHICS/0101.PAS.html (не идентичный, но похож)
Скомпилируйте и сравните.


Add: для тестирования могу дать ролик с зевающим котом (640х480, 45 кадров, 5.7 Мб). Моим кодом на VB (из-под среды) он грузится с полминуты.
Изображение

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 17.06.2006 (Сб) 22:44

НЕ Ругайтесь! Но вдруг кому интересно!
Если уж разговор зашёл об этой легендарной тройке "BASIC--Си--Паскаль", то приведу коё-чего из времён BASIC PDS. (И конечно же читайте "с поправкой на время").



Примером эффективности языков прог-
раммирования может служить команда вывода информации на печать -
print.
При переводе этой команды в машинный код может быть сгенерирова-
но до 10000 машинных команд. Наиболее применяемые на практике се-
годня языки программирования -это PASCAL, BASIC и Cи. Каждый из них
имеет свои положительные качества и недостатки. Все зависит от ре-
шаемой проблемы.
Си сложнее и применяется профессионалами для разработки систем-
ных программ, требующих доступа ко всем возможностям процессора и
ресурсам ПК. Современные версии BASIC и PASCAL при решении инженер-
ных и экономических задач примерно равноценны, но BASIC проще реа-
лизует запись алгоритмов, требует меньше времени на отладку, имеет
большую скорость компиляции и создает более скоростные исполняемые
модули пpи pаботе с действительными данными
.



Первым компилятором BASIC был QuickBASIC 4.0 (скоростной), имевший
до 300 команд и создававший EXE-модули с быстродействием в 2-3 ра-
за выше, чем PASCAL
.



Одна из последних перед VisualBASIC разработок фирмы Microsoft -
BASIC-PDS предназначена для профессионалов (Professional Develop-
ment System). Существует и еще один вариант названия MS BASIC
Extended - расширенный BASIC. По крайней мере, так его называет
Windows при подключении. BASIC-PDS работает в среде OS/2 или MS
DOS. Полная его версия со всеми библиотеками занимает 16 Мб памяти.
Это пока один из самых дорогих кoмпиляторов и по эффективности соз-
даваемых модулей сравним с С++ фирмы Borland. В некоторых случаях
модули, созданные BASIC-PDS, имеют на 20-25% большую эффективность
по времени, чем те же модули, созданные СИ. Такая разница возни-
кает за счет того, что часть функций BASIC-PDS реализована на ма-
шинном языке, а не на Ассемблере, как в Си. Операции с плавающей
запятой для ПК не имеющих сопроцессора BASIC-PDS выполняет в 3 ра-
за быстрее, чем С++, что имеет большое значение в сложных расчет-
ных задачах.
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 18.06.2006 (Вс) 20:01

tyomitch
К сожалению у меня сейчас не на чем компилировать, но вот пример, на котором обломались оппоненты (это фрактал). Хотелось бы увидеть квалифицированный перевод:
http://tuapse-mikle.narod.ru/FrVB6.rar
Последний раз редактировалось Mikle 19.06.2006 (Пн) 9:01, всего редактировалось 1 раз.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 18.06.2006 (Вс) 20:03

Роман-вб
А я удивлялся в свое время, что мои проги на QB обгоняют аналогичные на C.

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 27.06.2006 (Вт) 22:57

Главное не то на чём пишешь, а то откуда руки растут!

Если руци кривые, то любой язык -- гавно. )))

[Оффтоп]
Где-то видел статейку, что ВиБи 6 считает математику
немного быстрее чем Си пюсы.
[/Оффтоп]
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

vladgri
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 26.07.2006 (Ср) 14:52

Сообщение vladgri » 27.07.2006 (Чт) 6:02

Mikle писал(а):tyomitch
К сожалению у меня сейчас не на чем компилировать, но вот пример, на котором обломались оппоненты (это фрактал). Хотелось бы увидеть квалифицированный перевод:
http://tuapse-mikle.narod.ru/FrVB6.rar

Для Delphi
http://vlad-gri.pochta.ru/frD.rar

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 27.07.2006 (Чт) 16:25

vladgri
О! Thank!
Потестировал на K6-2 400, результат в пользу VB6:
VB6 - 0.96
D - 1.11-1.38
Но, кажется, там ошибка:
int64rec = record
dw1:Longint;
dw2:Longint;
end;
Longint - это разве не int64? А Long в бейсике - это int32.

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 27.07.2006 (Чт) 16:30

А у меня дельф пример работает быстрее (0,18*** у Бейсика, 0,15*** у дельфи) :roll:
Если всё делать своими ручками, они скоро отвалятся !

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 27.07.2006 (Чт) 16:38

Kovu
Сначала нужно исправить ошибку (если я не ошибаюсь).

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 27.07.2006 (Чт) 16:45

А какая разница, ведь быстрее же работает, это факт :) (правда размер екзе в 5 раз больше)
Если всё делать своими ручками, они скоро отвалятся !

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 27.07.2006 (Чт) 16:56

быстрее же работает, это факт

Ты "на глазок" отличил 0.15 сек. от 0.18 ?
Эта ошибка как раз в той части, которая измеряет время.

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 27.07.2006 (Чт) 17:06

Mikle
Гы, тем не менее у тебя "неправильно измеряющая время дельфийская функция" намерила больше, у меня меньше. Не кажется странным? :roll:
Последний раз редактировалось Kovu 27.07.2006 (Чт) 20:29, всего редактировалось 1 раз.
Если всё делать своими ручками, они скоро отвалятся !

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 27.07.2006 (Чт) 17:26

Kovu
Абсолютно не кажется. Заметь, что у меня VB дает стабильный результат, а D разброс от 1.11 до 1.38 (независимо от версии). А сейчас еще погонял - иногда зашкаливает за 2 сек.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 27.07.2006 (Чт) 17:55

Нужно юзать не "неравильно измеряющая время дельфийская функция", а GetTickCount...
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 27.07.2006 (Чт) 18:08

keks-n
GetTickCount на таких коротких промежутках очень неточен. Так что использование QueryPerformanceCounter оправдано.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 27.07.2006 (Чт) 18:28

Mikle писал(а):BV
Так и знал, что ты первый ответишь :)
А зачем голосовалка? Вопрос решается прямым измерением, и статистика личных мнений тут не при чем.




Прямо, достоинством меряться собрались, не иначе :lol:

vladgri
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 26.07.2006 (Ср) 14:52

Сообщение vladgri » 28.07.2006 (Пт) 5:48

Mikle писал(а):vladgri
О! Thank!
Потестировал на K6-2 400, результат в пользу VB6:
VB6 - 0.96
D - 1.11-1.38
Но, кажется, там ошибка:
int64rec = record
dw1:Longint;
dw2:Longint;
end;
Longint - это разве не int64? А Long в бейсике - это int32.

Longint в delphi равен Long в VB т.е. int32
Kovu писал(а):правда размер екзе в 5 раз больше

MSVBVM60.DLL

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.07.2006 (Пт) 8:58

MSVBVM60.DLL один на ВСЕ программы на VB. А в Дельфях в КАЖДУЮ программу вшивается рантайм. Хорошо сделано в сях - сам выбираешь, вшивать рантайм(а он там есть) или нет.
Изображение

vladgri
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 26.07.2006 (Ср) 14:52

Сообщение vladgri » 28.07.2006 (Пт) 11:39

keks-n писал(а):MSVBVM60.DLL один на ВСЕ программы на VB. А в Дельфях в КАЖДУЮ программу вшивается рантайм. Хорошо сделано в сях - сам выбираешь, вшивать рантайм(а он там есть) или нет.

В Delphi можно истользовать рантайм паккаджи
вот пример
http://vlad-gri.pochta.ru/frd2006withpackage.rar
используемые паккаджи
http://vlad-gri.pochta.ru/packageD2006.rar

Этот же пример нативно без VCL
http://vlad-gri.pochta.ru/frDnative.rar
ну и с использорванием трюков
http://vlad-gri.pochta.ru/frd2006trick.rar
Дальше будем бодаться?

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.07.2006 (Пт) 11:54

VB6 выпущен почти 10 лет назад... Если уж сравнивать, то последние версии, а для бейсика это VB 2005 на втором фреймворке, за счёт чего возможностей... А в твоих дельфях поддержка программирования на мобильных девайсах типа КПК и смартвонов(которая была уже в седьмом VB) даже не планируется.

Кросс-платформенность рулит...
Изображение

След.

Вернуться в Holy Wars@VBStreets

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList