Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|
Вопрос: Что нового в VB6 sp6
|
Добавлено: 16.08.11 07:55
|
|
|
Ответы
|
Всего ответов: 101
|
|
Номер ответа: 76 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #76
|
Добавлено: 19.09.11 02:30
|
Чисто ради хохмы результаты профилирования VB .NET проекта
http://clip2net.com/s/1bqeY
Сергей Юдин пишет:
Если, Вы спрашиваете меня, то посмотрите мои бенчмарки с этим кодом и увидите какие там типы переменных, а это я привел оригинальный код автора этого бенчмарка. Вот у него и спрашивайте.
В проекте VB6MV, который, как я полагаю, писали вы, также не указаны типы переменных, которые принимают участие в вычислениях. Поэтому вопрос для этой программы также актуален.
Сергей Юдин пишет:
Я думаю EROS, который является поклонником VB.NET скажет Вам спасибо и учтет эти замечания при оптимизации кода программы на VB.NET.
Ну я-то очень хорошо знаю EROS'а как большого поклонника VB .NET и борца за правду, поэтому уверен что он все-таки найдет время и разберется с этим злополучным проектом и мы сможем получить, как говорится, рассчетные данные на практике.
Ответить
|
Номер ответа: 79 Автор ответа: Сергей Юдин
Вопросов: 8 Ответов: 81
|
Профиль | | #79
|
Добавлено: 19.09.11 02:52
|
В проекте VB6MV, который, как я полагаю, писали вы, также не указаны типы переменных, которые принимают участие в вычислениях. Поэтому вопрос для этой программы также актуален.
Вы что слепой или безграмотный. Вот объявление переменных в VB6MV, где во второй строчке (в коментариях) даже написано для самых тупых, что это объявление переменных.
Option Explicit
Dim i%, k%, kodEnd%, kodCheck%(12), NC&, NC0&, NV&
Dim dxm#, dym#, dzm#, dx0#, dy0#, dz0#, dxp#, dyp#, dzp# ' объявляем переменные
Dim N0#, Np#, Nm#
Dim ML#, m#, g#, h#, u2#, T#, Tmax#(6), tau#, proc#(6), prock#(6)
Dim T0timer!, Ttimer!(6)
Dim kx#(6), ky#(6), kz#(6), FX#(6), FY#(6), FZ#(6), VX#(6), VY#(6), VZ#(6)
Dim Xk#, Yn#, Xi#
Dim x#(6), bx#(6), Xm2#(6), Xm1#(6), X0#(6), Xp1#(6), Xp2#(6)
Dim y#(6), by#(6), Ym2#(6), Ym1#(6), Y0#(6), Yp1#(6), Yp2#(6)
Dim Z#(6), bz#(6), Zm2#(6), Zm1#(6), Z0#(6), Zp1#(6), Zp2#(6)
Вы что слепой или безграмотный. Вот объявление переменных в VB6MV, где во второй строчке (в коментариях) даже написано для самых тупых, что это объявление переменных.
Option Explicit
Dim i%, k%, kodEnd%, kodCheck%(12), NC&, NC0&, NV&
Dim dxm#, dym#, dzm#, dx0#, dy0#, dz0#, dxp#, dyp#, dzp# ' объявляем переменные
Dim N0#, Np#, Nm#
Dim ML#, m#, g#, h#, u2#, T#, Tmax#(6), tau#, proc#(6), prock#(6)
Dim T0timer!, Ttimer!(6)
Dim kx#(6), ky#(6), kz#(6), FX#(6), FY#(6), FZ#(6), VX#(6), VY#(6), VZ#(6)
Dim Xk#, Yn#, Xi#
Dim x#(6), bx#(6), Xm2#(6), Xm1#(6), X0#(6), Xp1#(6), Xp2#(6)
Dim y#(6), by#(6), Ym2#(6), Ym1#(6), Y0#(6), Yp1#(6), Yp2#(6)
Dim Z#(6), bz#(6), Zm2#(6), Zm1#(6), Z0#(6), Zp1#(6), Zp2#(6)
Пока с наилучшими пожеланиями Сергей Юдин.
Ответить
|
Номер ответа: 84 Автор ответа: Сергей Юдин
Вопросов: 8 Ответов: 81
|
Профиль | | #84
|
Добавлено: 19.09.11 10:04
|
Сергей, я запускаю программу и вижу что занчение в текстбоксе меняется с очень большой скоростью, намного большей чем может анализировать в реальном времени человек. Но на каждое обновление текстбокса тратится время, причем как вы видите из результатов профилирования на это тратится практически все время работы программы. Объясните, зачем в конкретно данной программе делать обновление UI так часто.
По тому, что это типовая программа для численного решения дифференциальных уравнений численными методами, но чтобы тест не длился несколько часов или суток система дифференциальных уравнений и метод их решения взяты простейшими. Возьмите мою программу Solsys6 и на второй форме (нажать кнопку /К моделированию/) запустите процесс с NC0 = 10000 шагов на вывод. Данные будут в этом режиме, т.е. практически режиме бенчмарка, выводится на экран через 12 секунд, а если взять NC0 = 20000, то через 24 секунды (больше 32000 нельзя задать, да здесь и не надо). Можете даже в программе Spusk задать NC0 = 100000 (при шаге решения 0,000001 секунда или ускорении 0,1 м/с^2) и Вы увидите, что данные меняются где-то через 1 секунду. Т.е. быстрота вывода данных в текстбоксы определяется как самой задачей, так и вашим требованием к частоте обновления данных и может быть практически любой.
Сергей Юдин.
Ответить
|
Номер ответа: 86 Автор ответа: Сергей Юдин
Вопросов: 8 Ответов: 81
|
Профиль | | #86
|
Добавлено: 19.09.11 10:10
|
Вобщем мне этот спор надоел. Если вас устраивают условия проведения бенчмарка, я все еще готов в нем учавствовать. Если нет, опишите формально на каких условиях вы готовы проводить бенчмарк, и если они окажутся разумными и устроят меня, я напишу программу на C#. Впрочем мне сложно придумать задачу, на которой VB6 объективно обгонит C#.
А я никак не пойму – Вы для кого пишете свой бенчмарк, т.е. какие потребители программ должны ориентироваться на данные Вашего бенчмарка. Я так понял, что Вы хотите написать какой-то абстрактный бенчмарк не известно для кого (наверное лично для себя). Но, даже, если это и так и Вы хотите показать какой быстрый язык C# я не понимаю чем Вас не устраивает моя тестовая программа Spusk. Задайте kodG=0, kodT=0 и практически при любом значении NC0 (но лучше задать побольше) программа будет работать в режиме любимого Вами бенчмарка, т.е. программы выполняющей только математические вычисления. А вот обгонит или не обгонит в реальной задаче, а не на абстрактном бенчмарке, это мы будем посмотреть, хотя я такой цели перед собою и не ставил.
Сергей Юдин.
Ответить
|
Номер ответа: 87 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #87
|
Добавлено: 19.09.11 15:18
|
Сергей Юдин пишет:
А я никак не пойму – Вы для кого пишете свой бенчмарк, т.е. какие потребители программ должны ориентироваться на данные Вашего бенчмарка.
Этот бенчмарк делается для программистов, а не для потребителей программ. Потребителям программ не должно волновать на каком языке они написаны и какой из них быстрее.
Сергей Юдин пишет:
Я так понял, что Вы хотите написать какой-то абстрактный бенчмарк не известно для кого (наверное лично для себя)
Сергей, я лично давно сделал выбор в пользу определенных языков программирования, и скорость не была критерием выбора. Тем не менее я отлично понимаю возможности этих языков программирования в плане быстродействия, и как примерно они соотносятся с другими современными языками программирования. Мне не нужен бенчмарк VB6 vs C++ vs C# vs VB .NET, потоу что я прекрасно понимаю что C# на голову выше VB6, ниже С++, очень немного выше VB .NET. Это не мои личные рассуждения, это не данные которые я получил в "абстрактных бенчмарках", а реальность, которая обусловлена внешними факторами, и с которой тут не будет спорить никто кроме, наверное, вас.
VB6 заброшен больше 10 лет назад и его компилятор не оптимизирован под современные процессоры
Над компиляторами С++ работает целая армия же больше 20 лет, включая таких монстров как Intel и Microsoft, если вам это о чем-то говорит, и конкурировать с ним не может практически никто
В VB .NET и C# работают на одном и том же JIT компиляторе и оптимизаторе, с одним рантаймом, а компиляторы vbc и csc практически не занимаются оптимизацией, поэтому разницу можно получить очень редко за счет поддержки в C# "опасных указателей" и определенных синтаксических конструкций (которые сильно снижают понятность кода), что было доказано мной на бенчмарке алгоритма генерации псевдослучайных чисел.
Любой корректно проведенный бенчмарк подтвердит то что я выше написал.
Сергей Юдин пишет:
Но, даже, если это и так и Вы хотите показать какой быстрый язык C# я не понимаю чем Вас не устраивает моя тестовая программа Spusk. Задайте kodG=0, kodT=0 и практически при любом значении NC0 (но лучше задать побольше) программа будет работать в режиме любимого Вами бенчмарка, т.е. программы выполняющей только математические вычисления.
Ну посмотирте таблицу, в этих режимах VB6 всегда показывате худшее время, что вы еще хотите увидеть?
Сергей Юдин пишет:
А вот обгонит или не обгонит в реальной задаче, а не на абстрактном бенчмарке, это мы будем посмотреть, хотя я такой цели перед собою и не ставил.
Если язык обгоняет на тесте, но проигрывает в реальной задаче, это можно объяснить двумя причинами.
Тест был специально заточен под определеныне возможности языка, которые редко используются в реальных задачах.
Например, в дотнете отличный менеджер памяти и, зная принцип его работы, несложно подобрать условия в которых он покажет максимальнео быстродействие, а VB6 будет абсолютно нечего противопоставить.
В дотнете есть поддержка 64-битного режима, т.е. мы можем поставить задачу, в которой нужно оперировать десятком гигабайт данных, и пока C# будет спокойно его перемалывать, в VB6 прийдется либо сливать данные в файл, либо запускать несколько процесов и тратить время на коммуникацию между ними.
Если боитесь что в предложенном бенчмарке будет такая ситуация, скажите, какие, по вашему, возможности языка C# дадут нечестное, отсутствующее в реальности преимущество?
Либо может быть тот кто выполнял реализацию реальной задаче - человек не разбирающийся в возможностях языка и платформы или вообще не знающий их.
По вашей программе на VB .NET я уже указал на ряд недочетов, которые серьезно повредят быстродействию, поэтому я не сомневаюсь, что проседание программы VB .NET в определенных режимах связанно именно с вашими ошибками.
Ответить
|
Номер ответа: 88 Автор ответа: Сергей Юдин
Вопросов: 8 Ответов: 81
|
Профиль | | #88
|
Добавлено: 19.09.11 22:31
|
Этот бенчмарк делается для программистов, а не для потребителей программ. Потребителям программ не должно волновать на каком языке они написаны и какой из них быстрее.
Сергей, я лично давно сделал выбор в пользу определенных языков программирования, и скорость не была критерием выбора. Тем не менее я отлично понимаю возможности этих языков программирования в плане быстродействия, и как примерно они соотносятся с другими современными языками программирования. Мне не нужен бенчмарк VB6 vs C++ vs C# vs VB .NET, потоу что я прекрасно понимаю что C# на голову выше VB6, ниже С++, очень немного выше VB .NET. Это не мои личные рассуждения, это не данные которые я получил в "абстрактных бенчмарках", а реальность, которая обусловлена внешними факторами, и с которой тут не будет спорить никто кроме, наверное, вас.
Готов подписаться под каждым Вашим словом по возможностям различных языков и по этому не понятно зачем Вы мне все это пишите. Я ведь и когда писал статью, то поставил быстродействие только на 4-е место по приоритетам выбора языка программирования. Дело просто в том, что какую статью не начнешь читать по обзору языков программирования, то кругом обязательно напишут, что BASIC самый медленный язык. И только по этому я и решил показать в своей статье, что не такой уж он и медленный, как пишут многие. А то, например, в исследование http://itc.ua/print.phtml?ID=15800 язык Visual Basic 6.0 после первого теста на быстродействие даже был снят с дальнейших испытаний из-за очень маленькой скорости работы, т.е. только по быстродействию он был объявлен языком не пригодным для программирования.
Да, я согласен, что в плане тонкостей программирования Visual Basic 6.0 уступает по возможностям многим другим языкам, но статью я писал для научных работников, которые размышляют над тем какой им выучить язык, чтобы самому написать конкретную программу для своего исследования и возможно, что это будет не только первая, но и последняя программа в их жизни. Так зачем же им забивать себе голову сложностями С++ или языков семейства NET. По этому, приоритеты для таких людей при выборе языка программирования я расставил в следующем порядке
1 - простота написания программ и понятность языка программирования для широкого круга пользователей
2 – возможности предоставляемые языком для решения разнообразных задач
3 – простота компиляции программ и установки их на различные компьютеры пользователей
4 – скорость работы программ
По вашей программе на VB .NET я уже указал на ряд недочетов, которые серьезно повредят быстродействию, поэтому я не сомневаюсь, что проседание программы VB .NET в определенных режимах связанно именно с вашими ошибками.
Именно по этому я и в статье и в этом топике прошу специалистов VB .NET доработать мой код, чтобы можно было с уверенностью говорить о скорости работы того или иного языка программирования, т.к. хотя я этот критерий и поставил на 4-е место, но иногда, как, например, в моей задаче поиска скорости гравитации он вышел у меня сейчас почти на первое место и я недавно купил 4-х ядерный компьютер, чтобы сократить время работы над задачей.
И именно по этому я прошу и Вас, как специалиста по C# написать тестовую программу Spusk на этом языке, чтобы без всяких оговорок с уверенностью говорить о скорости работы программы на различных режимах работы. Ведь кому-то больше всего нужен один режим работы, а другому другой режим, где быстродействие языка будет другим. Возможен и такой вариант, что первоначально программа будет написана на одном языке, а потом, в связи с изменившимися требованиями, будет переписана на другом языке. Например, я вот сейчас подумываю написать для программы Solsys, которая написана на Visual Basic 6.0, DLL библиотеку на Free Basic для решения дифференциальных уравнений численными методами, чтобы увеличить быстродействие программы. Можно, написать и на С++, но овчинка выделки не стоит, т.к. синтаксис Free Basic очень похож на Visual Basic 6.0, а быстродействие примерно такое же как и у С++.
А то, что Вы собираетесь для программистов написать еще один бенчмарк, то в этом я не вижу никакого смысла. Во-первых, этих бенчмарков и без Вас написано огромное количество и всем специалистам и так уже примерно известны возможности по быстродействию различных языков на математических операциях. А во-вторых, если Вы напишите такой бенчмарк на C#, то Вам придется его писать и еще на десятке других языков, чтобы можно было их сравнивать на этом бенчмарке. Так что сделайте доброе и полезное дело – напишите на C# тестовую программу Spusk, а там глядишь и EROS доделает мою программу на VB .NET .
С наилучшими пожеланиями Сергей Юдин.
Ответить
|
Номер ответа: 89 Автор ответа: Nash Bridges
Вопросов: 5 Ответов: 139
|
Профиль | | #89
|
Добавлено: 19.09.11 22:54
|
Artyom,
всё так, только переменные типа вариант и позднее связывание никак не связаны между собой, как холодное и зеленоё.
Юстас Алексу,
Вам говорят, что Ваши тесты абсолютно некорректны, что их нельзя сравнивать между собой.
Вы ошиблись, Вы сделали неправильный вывод из неправильных входных данных с помощью неправильного алгоритма, неправильно реализованного.
Всё не так. Здесь просто говорить не о чем. Это феерическое поражение. Ваши быдлокоды НиОЧем.
Это просто надо принять, Вы - научный работник, неудача - только ступенька к успеху. В науке такое сплошь и рядом.
А впереди - 4 ядра, одновременно нагрузить которые реализацией нужного алгоритма на ВБ6 будет достойной задачей.
И еще, автор сообщения автоматически выводится слева от поста, поэтому не обязательно подписывать каждую свою научную нетленку.
Вопрос собственно остался в топике один: зачем Вы это делаете?
Ответить
|
Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Поиск по форуму