Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 | 5 | 6 |

 

  Вопрос: DLL из FreeBasic в Visual Basic6.0 Добавлено: 22.12.06 10:24  

Автор вопроса:  Сергей Юдин

Ответить

  Ответы Всего ответов: 77  

Номер ответа: 16
Автор ответа:
 Сергей Юдин



Вопросов: 8
Ответов: 81
 Профиль | | #16 Добавлено: 30.12.06 11:08
Выкладывай


На зеркале своей домашней странице http://modsys.narod.ru по недокументированной ссылке http://modsys.narod.ru/Ris/Spusk_TEST5.zip выложил архив с исходниками и откомпилированными файлами программ SpuskSiM и SpuskVB6M, которые решают одну и ту же простейшую физическую задачу и написаны так, чтобы на них можно было проводить тесты на время при различных режимах проведения научных экспериментов. Дам некоторые пояснения к данным программам, а описание программы SpuskVB6M можно прочитать нажав кнопку About. В этих программах используются разные режимы проведения научных экспериментов, как на стадии отладки математической модели, когда параметр режима работы программы NC0 нужен маленький, так и на стадии проведения массовых экспериментов, когда нас не интересуют тонкости протекания процесса, а интересует только конечный результат, например, значение Tm в конечной точке при изменение одного, например, Yn или нескольких начальных параметров математической модели, и тогда мы можем задать параметр режима NC0 очень большим. Также на стадии отладки модели нам желательно выводить на экран всю графическую и текстовую информацию, а при проведение массовых экспериментов можно вообще не выводить на экран никакой текущей информации, а только показать результат в конце эксперимента.

Для сравнения приведу несколько результатов полученных на моем пентиуме с частотой 2 ГГц для двух режимов, когда tau = 0.00001 сек, kodG (графика) =1, kodT (текст) =0, а параметр NC0 принимал два значения 10 и 10000 шагов решения. Для SpuskSiM получилось 4,34 и 0,523 сек, а для SpuskVB6M 8,22 и 6,86 сек, но один из вариантов программы SpuskVB6M, а именно SpuskVB6MVdllFB показывает результаты 6,22 и 0,507 сек, что меня уже вполне устраивает для режима массовых экспериментов, но может быть что то улучшу и для режима отладки. Желательно, чтобы визуальный интерфейс программы SpuskVSiM был максимально похож на SpuskVB6M, чтобы не только было проще работать, но и результаты тестов были бы сопоставимы.

Поздравляю всех с наступающим новым годом и желаю удачи и только приятных мук творчества. Сергей Юдин.

Ответить

Номер ответа: 17
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #17 Добавлено: 30.12.06 17:03
воопервых та версия что на ВБ, гораздо "тяжелее" чем та что на Си, вплане навороченности, кол-ва входных параметров итп итд...
Вовторых, программа на ВБ, несовсем удачно скомпилирована, т.к. не настроено Advanced Optimization... на вб проги это особенно влияет...
втретих, код проги на вб написан не лучим образом, есть возможность оптимизировать дальше сам код...
в-четвёртых, компилятор Си всё же меньше мусора вставляет чем вб6, логично что работать оно должно на Си быстрее...

На FreeBasic'e аозможно будет чуть быстрее, всё по той же причине - подругому он компилирует, меньше защиты от "произошла ошибка по адресу... приложение будет закрыто..." В принципе, как и в PowerBasic... Поэтому собственно и непонятно в чём Вы, ув. Сергей хотите нас просветить...

Ответить

Номер ответа: 18
Автор ответа:
 Сергей Юдин



Вопросов: 8
Ответов: 81
 Профиль | | #18 Добавлено: 31.12.06 09:04
Вовторых, программа на ВБ, несовсем удачно скомпилирована, т.к. не настроено Advanced Optimization... на вб проги это особенно влияет...

Если можно, то поподробнее. У меня в свойствах проекта на вкладке компиляция отмечены только опции оптимизировать скорость и предпочтение для Pentium Pro.
Поэтому собственно и непонятно в чём Вы, ув. Сергей хотите нас просветить...

Во первых, навряд ли я смогу Вас особо просветить, т.к. не являюсь профессиональным программистом, хотя и занимаюсь программированием уже 27 лет (правда с большим перерывом), а во-вторых статья, которую я пишу, будет называться “Выбор языка программирования для научных работников” и, следовательно, к Вам навряд ли имеет прямое отношение, а в третьих я обратился на этот форум за помощью, а не с целью просвещения программистов (хотя в предубеждение программистов о том, что язык Бэйсик является не полноценным языком, можно было бы и просветить кое-кого). А эти примеры я выложил по тому, что мне заявили будто бы моя программа написанная на Бэйсике работает даже немного быстрее, чем аналогичная на С+ по тому, что я не умею программировать, а вот профессиональные программисты сейчас напишут аналог моей программы на VisualC+ и она заработает быстрее, чем моя. По этому не ясно кто тут кого просвещает, но самое интересное, посмотреть каков будет положительный результат этого просвещения.

С наилучшими пожеланиями Сергей Юдин.

Ответить

Номер ответа: 19
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #19 Добавлено: 02.01.07 22:16
Ого 27 лет программирования это респект :) Я прожил гораздо меньше, и кстати профессиональным программистом ещё не стал, да и более того, не определился хочу ли им стать :)

По поводу оптимизации - можно и подробнее... Там есть кнопочка Advanced Optimization, на неё тык - вылезит окошко с галками, поставте везде там где "Remove ..." разгонит раза в полтора, в два это точно...

Насчёт того, что на Бейсике будет быстрее чем на Си, Вы что-то неправельно поняли. Такого никто не говорил. Имели ввиду, что эффективность любого языка зависит прямым образом от уровня программиста. Тоесть можно написать на Си так криво, что оно будет работать медление чем на Бейсике. У всех программистов разная степень криворукости, поэтому вся эфективность языков немного сглаживается, и получается, что один и тот же человек, напишет один и тот же алгоритм на Си и на Вб, и на Си он будет скорее всего быстрее... Но если попросить более опытного программиста написать этот же алгоритм на Бейсике, то возможно он будет быстрее, а возможно и такой же как на Си...

Я бы советовал использовать связку ассемблера и вб. Очень мощная штука получается - наглядная простота бейсика, и скорость ассемблера...

По поводу, что Бейсик не полноценный язык - так говорили до .нета. Всё дело в том, что бейсик виртуальная машина, и отцыпится от неё невозможно. Другая небольшая проблема - нет прозрачной работы с указателями, но это незначит что вовсе нельзя работать с ними. Вот и всё, это единственное отличие бейсика от других языков "того времени". Дальше всё упирается в расширениях - дополнительных компонентов, примеров, документации итп итд... С выходом .нет нас всех заставили дружит с виртуальной машиной, и весит она теперь далеко не полтора мегабайта :) Также появились интерессные примеры работы с указателями, исполения ассемблерного кода ну и ещё много чего... Поэтому я даже незнаю почему у некоторых всё ещё остался привкус того что бейсик не полноценный язык...

Ответить

Номер ответа: 20
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #20
Добавлено: 02.01.07 23:00
статья, которую я пишу, будет называться “Выбор языка программирования для научных работников” и, следовательно, к Вам навряд ли имеет прямое отношение

Ко мне имеет самое прямое :) Признаться, код на C++ настолько кривой, что мне стало просто лень разбираться, где там ошибки. Но если вам действительно интересно узнать, кто быстрее - возьмите профайлер - инструмент, который позволяет замерять скорость выполнения отдельных участков программы и посмотрите, какие операции являются основным источников тормозов в первом и втором случае.

Ответить

Номер ответа: 21
Автор ответа:
 Сергей Юдин



Вопросов: 8
Ответов: 81
 Профиль | | #21 Добавлено: 03.01.07 00:25
По поводу оптимизации - можно и подробнее... Там есть кнопочка Advanced Optimization, на неё тык - вылезит окошко с галками, поставте везде там где "Remove ..." разгонит раза в полтора, в два это точно...

Спасибо за помощь, но к сожалению моей программе это практически ничего, кроме головной боли не дает. Да и авторы книг не рекомендуют включать эти опции. И у меня вариант программы SpuskVBMVdllFB действительно перестает работать, но, если убрать галочку с Allow Unrounded Floting Point Operations, то программа работает. Только время работы наоборот увеличивается с 0,507 сек до 0,718. Правда в варианте программы SpuskVBMV при включенных всех опциях выигрыш во времени действительно есть и время работы уменьшается с 2,156 сек до 1,953, но рисковать работоспособностью программы ради такого призрачного увеличения быстродействия навряд ли стоит.

Насчёт того, что на Бейсике будет быстрее чем на Си, Вы что-то неправельно поняли.

Вынужден заметить, что это Вы что-то не поняли. Я как раз и начал эту тему с того, что упомянул о том, что повышение быстродействия программ, написанных на Visual Basic 6.0, является насущным вопросом сегодняшнего дня. А среди программистов сложилось устойчивое мнение, что Visual Basic 6.0 не просто медленный язык, а очень медленный и по этой причине его даже сняли с дальнейших испытаний во вполне солидном на первый взгляд исследование http://itc.ua/print.phtml?ID=15800 . Но язык Бэйсик, на мой взгляд, является самым простым языком программирования и по этому наилучшим образом подходит научным работникам, которым надо изучать не тонкости языка программирования, а тонкости той проблемы, над которой они работают. Однако во многих научных исследованиях скорость работы программы играет не последнюю роль и по этому я разрабатываю сейчас простейшие методы, которые бы позволили увеличить быстродействие таких программ. По этой же причине не подходит и Ваша рекомендация вставлять куски кода на ассемблере, т.к. это все таки сложновато. Кстати, я не в курсе, что Visual Basic 6.0 позволяет это сделать, хотя знаю, что Free Basic позволяет делать такие вставки и не только на ассемблере. Где это можно посмотреть для общего развития.

По поводу, что Бейсик не полноценный язык - так говорили до .нета. Всё дело в том, что бейсик виртуальная машина, и отцыпится от неё невозможно. Другая небольшая проблема - нет прозрачной работы с указателями, но это незначит что вовсе нельзя работать с ними. Вот и всё, это единственное отличие бейсика от других языков "того времени".

Применение НЭТа, к сожалению, для научных работников (в общей массе) это тоже не возможно из-за его сложности и по этому остаемся в “том времени”. А вопрос со ссылками элементарно решается в Free Basic (в том числе и со ссылками на функции) и по этому я вижу оптимальным выходом сочетание Visual Basic 6.0 для интерфейса и Free Basic как DLL библиотеки для самих вычислений, т.к. оба языка поддерживают простейший синтаксис Quick Basic. И в программе SpuskVBMVdllFB я как раз и реализовал данный алгоритм, который на некоторых режимах показывает результаты сопоставимые с программами написанными на С++, но для полноты исследования хотелось бы посмотреть на результаты, которые показывает аналогичная программа написанная на VisualC++ и я все таки надеюсь, что кто ни будь возьмется за это дело, т.к. для меня язык С++ не является родным и я боюсь, что что-нибудь там напортачу, а потом сделаю далеко идущие выводы из результатов теста.

С наилучшими пожеланиями Сергей Юдин.

Ответить

Номер ответа: 22
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #22
Добавлено: 03.01.07 00:46
научным работникам, которым надо изучать не тонкости языка программирования, а тонкости той проблемы, над которой они работают

Программирование - вторая грамотность, говорил академик Ершов. Вы же не предлагаете научным работникам забить на правила русского (украинского) языка в публикациях потому, что они слишком сложные, а вам нужно сосредоточиться на результатах, которые вы описываете?

Ответить

Номер ответа: 23
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #23 Добавлено: 03.01.07 02:13
заметь
поставте везде там где "Remove ..."


но, если убрать галочку с Allow Unrounded Floting Point Operations, то программа работает.


Я разве говорил поставить на "Allow Unrounded..." ? Я говорил только про "Remove ..." !

но рисковать работоспособностью программы ради такого призрачного увеличения быстродействия навряд ли стоит.

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

VB6, как и любой другой язык, позволяет использовать свои DLL библиотеки, а они могут быть написаны на чём угодно, включая тот же Си и ассемблер. Я это имел ввиду. Встроенных возможностей (таких как в Си, Делфи) вставки ассемблерного кода конечно нету, как и работы с указателями... но я ж писал, всё просто спрятано :)

Применение НЭТа для научный работников, на мой взгял лучшее решение. Там ненадо думать о программировании (не кидайте в меня тухлыми помидорми), там надо тыкать кнопочки на формы и вызывать методы классов. Помойму то что надо, чтобы неотвлекаться от научной работы...

Код на Си действительно не идеален, но я если и заметил какие-то "кривые моменты", то тоже не возьмусь их исправлять... Здесь нужен кто-то, для кого бы Си, как для нас бейсик :)

Но вообщето... ничё не понятно. О чём вы? О том что FreeBasic будет быстрее или такой же как Си - так вы не правы... О том, что Си быстрее будет - так и так все согласны... Или чисто спортивный интерес написать статью и привести какие-то результаты тестирования?

Ответить

Номер ответа: 24
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #24
Добавлено: 03.01.07 08:32
Здесь нужен кто-то, для кого бы Си, как для нас бейсик

Угу, и кому не лень читать ужасно написанный и ужасно структурированный код :)

Ответить

Номер ответа: 25
Автор ответа:
 Сергей Юдин



Вопросов: 8
Ответов: 81
 Профиль | | #25 Добавлено: 03.01.07 12:18
Применение НЭТа для научный работников, на мой взгял лучшее решение. Там ненадо думать о программировании (не кидайте в меня тухлыми помидорми), там надо тыкать кнопочки на формы и вызывать методы классов. Помойму то что надо, чтобы неотвлекаться от научной работы...

Я думаю, Вы измените свое мнение после прочтения статьи, т.к., не говоря пока о сложности одного и другого языка, могу только сказать, что скорость у НЭТа получается гораздо хуже почти на всех режимах работы программы SpuskVBnetMV. Но в любом случае буду рад, если Вы аргументировано выскажите свое мнение после прочтения статьи.

Но вообщето... ничё не понятно. О чём вы? О том что FreeBasic будет быстрее или такой же как Си - так вы не правы... О том, что Си быстрее будет - так и так все согласны... Или чисто спортивный интерес написать статью и привести какие-то результаты тестирования?

Да действительно, началось все с чисто спортивного интереса вот на этом сайте по физике http://physics.nad.ru/aniboard/messages/291.html , но сейчас этот спор уже перерос в научное исследование и есть положительные результаты, т.к. программа SpuskVB6MVdllFB на многих режимах работает быстрее, чем SpuskSiM, а сам код на примере простейшего бенчмака работает быстрее на FreeBasic, чем на С++. А у автора статьи "О бедном Basic замолвите слово!" http://hiprog.com/index.php?option=com_content&task=view&id=467&Itemid=38 работает даже гораздо быстрее. Более того, на некоторых режимах работы показывает наилучший результат программа SpuskTPM, написанная на Турбо Паскале 7.0. По этому, как видите, не все так однозначно и как оказывается не все безоговорочно согласны с общепринятым мнением.

С наилучшими пожеланиями Сергей Юдин.

Ответить

Номер ответа: 26
Автор ответа:
 Сергей Юдин



Вопросов: 8
Ответов: 81
 Профиль | | #26 Добавлено: 03.01.07 12:33
Программирование - вторая грамотность, говорил академик Ершов. Вы же не предлагаете научным работникам забить на правила русского (украинского) языка в публикациях потому, что они слишком сложные, а вам нужно сосредоточиться на результатах, которые вы описываете?


Да не предлагаю и полностью согласен с академиком. Более того, пытаюсь помочь научным работникам выбрать один из множества языков программирования, который бы им максимально подходил. Вы ведь не будете спорить, что выбор языка программирования для системного администратора отличается от выбора языка для научного работника.

С наилучшими пожеланиями Сергей Юдин.

Ответить

Номер ответа: 27
Автор ответа:
 Сергей Юдин



Вопросов: 8
Ответов: 81
 Профиль | | #27 Добавлено: 03.01.07 12:34
Программирование - вторая грамотность, говорил академик Ершов. Вы же не предлагаете научным работникам забить на правила русского (украинского) языка в публикациях потому, что они слишком сложные, а вам нужно сосредоточиться на результатах, которые вы описываете?


Да не предлагаю и полностью согласен с академиком. Более того, пытаюсь помочь научным работникам выбрать один из множества языков программирования, который бы им максимально подходил. Вы ведь не будете спорить, что выбор языка программирования для системного администратора отличается от выбора языка для научного работника.

С наилучшими пожеланиями Сергей Юдин.

Ответить

Номер ответа: 28
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #28
Добавлено: 03.01.07 15:11
Не знаю, каких именно научных работников имеете ввиду вы, но у нас, в МГУ, и химики, и физики, и математики пользуются в основном C++, Fortran, специальные языки а ля Matlab, Maple, иногда Java. На computer science диапазон используемых языков, конечно, намного шире, но C++ все равно впереди всех.

Ответить

Номер ответа: 29
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #29 Добавлено: 03.01.07 20:53
ок, статью ждёмс... но Сергей Юдин, некажется ли вам, чтобы судить о скорости любого языка, нужно прощупать его до косточек? А какой язык программирования, из которых состоят программы, вы считаете за прощупанный до косточек? Мой скромный опыт программирования с натяжкой позволит мне говорить о вб6... А Вам?

Ответить

Номер ответа: 30
Автор ответа:
 Сергей Юдин



Вопросов: 8
Ответов: 81
 Профиль | | #30 Добавлено: 05.01.07 11:24
Не знаю, каких именно научных работников имеете ввиду вы, но у нас, в МГУ, и химики, и физики, и математики пользуются в основном C++, Fortran, специальные языки а ля Matlab, Maple, иногда Java.

Я имею ввиду научных работников, которые только задумываются над выбором языка для своих научных исследований. Да я тоже 10 лет проработал на Фортране. Ну и что теперь. Продолжать работать на нем и других агитировать учить этот язык (хотя теперь это уже не тот фортран). Но я Фортиан не выбирал. Просто в то время куда не прийди, почти на всех больших машинах (СМ 1600, ЕС1865) стоял Фортран. Да я тоже пользуюсь иногда Maple (в основном для символьных вычислений), но предпочитаю всегда, если можно, писать программу на Бэйсике для решения любой задачи, которую можно решить в Maple, т.к. я хочу не только увидеть конечный ответ, а знать как он получен, чтобы доверять этому ответу. И вообще все эти математические пакеты не могут заменить языки программирования.

С наилучшими пожеланиями Сергей Юдин.

Ответить

Страница: 1 | 2 | 3 | 4 | 5 | 6 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам