A reader just wrote to say, "I found your comments about Microsoft's plan to discontinue support for VB6 developers very helpful and well articulated. ... I'm glad to hear that serious VB developers are mounting a protest. I'll definitely look to your webpage for further developments."
He also wrote some other very nice things. After I returned from my ego trip, I wrote this reply.
The blogs and articles to which you refer were written a few years ago. Things are different now.
It's not that I have changed my mind. Far from it. I still think Microsoft betrayed and deserted a whole generation of programmers when they didn't have to. I've had sharp words with more than one Microsoft zombie about this.
But you have to face facts at some point and the fact is that VB6 is well and truly, dead and gone.
Have you ever watched the British comedy Red Dwarf? There's a wonderful scene in the first episode:
Computer: Everyone is dead Dave.
Dave: Not Murphy! Is Murphy dead?
Computer: They're all dead. All of them.
Dave: Jones couldn't be dead. Is Jones dead?
Computer: They're all dead. Jones too. Everybody is dead.
Dave: Baxter isn't dead is he? I just saw him yesterday!
Computer: Everyone is dead. Baxter is part of everyone. Everyone is dead.
… and it goes on like that … I thought it was hilarious!
Anyway … Here's a news flash. VB6 is dead. Has been for a while now. I wish that it were otherwise. It's not.
But you asked a specific question:
"I was recently told that Microsoft will not be continuing support or the VB runtime beyond Windows 7. Would this allow me to continue to offer my software to Windows users?"
I assume you mean …
http://msdn.microsoft.com/en-us/vbrun/ms788708.aspx
Reading that carefully, you will notice that parts of VB6 are already not supported with any of the operating systems Microsoft supports today, not just versions beyond Windows 7. Does VB6 run anyway? Yes it does!
The key phrase is:
"There may be differences in functionality that will require modifications to your applications. These differences will be addressed on a case-by-case basis via normal support channels."
The part of that which won't apply to VB6 in the future is: "These differences will be addressed …" In the future, they won't be addressed. Your fallback will be the first sentence, "There may be differences in functionality that will require modifications to your applications." Oh yeah! It will all be up to you.
Just out of curiosity, I brought up DOS QuickBasic on my Vista Business machine not long ago. It ran perfectly. It's not that things will stop working. They all depend on the same Intel instruction set that Microsoft is totally and completely tied into and always will be. If they stopped supporting that, they might as well just give Apple the keys to the building. But there could be … like Microsoft says … "differences in functionality". Your graphics might stop displaying the same way they used to, for example. And there won't be anyone to help you figure out what happened.
I feel for you! I really do! But my best advice is to learn how to program in VB.NET. As for VB6, as my good friend from "Joisey" would say, "Fahgettaboutit!"


Hi Dan,
Although I appreciate your advice to “Fahgettaboutit!”, and to move on to VB6, Why does it “feel” like a VB.NET App is so much slower than a VB6 App? Running a few sample cases of code, I found that the equivalent VB.NET App ran 10 times more slowly than the equivalent VB6 Code. It certainly made for a far less pleasant user experience.
Although I was getting ready to make the switch this year (ie computer hardware keeps getting faster), I am finding that with the popularity of Netbooks, it may still be premature to move out of VB6.
For the record, I paid a lot of money for VS 2002, then upgraded to VS 2003, and finally purchased again a full version of VS 2005 Pro with the best intentions to migrate to .NET. I haven’t tried VS2008 as I am now getting lazy at the thought of further disapointment.
Anyway, am I missing something? Or do you think I need to migrate from VB6 to VS2008, using C++ if the need for a speedy UI is important.
Cheers!
Michel K-17
Actually measuring raw performance like this accurately is more difficult than you might think. It’s hard to avoid the “apples vs. oranges” error in making comparisons.
In addition, Microsoft doesn’t help us out much because their legal agreements with partners and others essentially forbids publishing benchmarks so their marketing department can control whatever information does get out. (If you read my blogs, you will see that while I have great respect and admiration for programmers like Bill Gates and Anders Hjelsberg, I regard most marketing people and MBA’s as a type of disease.)
That doesn’t mean there’s no data at all available. And the data that does exist suggests that a lot of improvement has been made with VB.NET.
Actuarial expert Brad Gile has measured the performance of “the most important probability distribution in mathematics: the Standard Normal Distribution” in his paper, “RAW PERFORMANCE: VB6.0 VS. VB.NET AND C#”. He concluded that, “Run times may be cut by 50% or more using VB.NET.”
Robert Wlodarczyk at SUNY Stony Brook in “Performance Testing Visual Studio .NET” reported these results:
[click to see graphic]
As you can see, VB.NET vastly outperformed VB6 in most categories. It’s worth keeping in mind that this test used the last, best version of VB6 and a version of VB.NET that was obsolete five years ago.
The “apparent” difference is likely due to the fact that VB.NET can simply do so much more. Individual operations work faster, but in general, many many more things are being done.
Hi Dan,
Thanks for the feedback. My testing was much less scientific, and consisted of multiple math operations and graphics processing. I tried the code from within the IDE and compiled in both cases.
The graphic you posted seems really odd. I cannot imagine VB6 taking 18705 ms (18+ secs) to Get a property, or 1,212 seconds (20 minutes!) to instantiate an object. Seems like there is something not quite right in the data being presented. Am I mis-interpreting the data?
Thanks again,
Michel
“The graphic you posted seems really odd.”
I’ve got to start researching my own web site a little more thoroughly before I hit the “send” button.
As it turns out, I’ve had this conversation before:
Which is faster? VB 6 or VB.NET?
In that article, I quoted, and then retracted, Robert Wlodarczyk’s statistics. (It just shows to go you that nothing is ever really deleted on the net.)
“After Robert’s article was published, it was roundly criticized in the newsgroup, “microsoft.public.dotnet.framework.performance” as inaccurate. Dan Appleman, founder of Desaware Software, co-founder of APress, and author of the legendary “Guide to the Win32 API” for Visual Basic 6 wrote, “The VB.Net benchmarks are all incorrect. Benchmarking is VERY difficult to do correctly.” (I contacted Robert directly about this. Unfortunately, he said he had not updated the study.)”
Wow … I did a lot of research the last time this came up!
Hi there:
Right now, i am doing a benchmark between the old vb6 and the new visual studio 2010. The test was simple :just concatenate a string 5000 times, then return the resultant, then repeteat the whole process 10 times (just for take the average speed) I known that visual basic 6 is not optimized for such task but the resultants was a bit weird:
vb6 :took 67.53 seconds, average 6.753 seconds.
while :min 6.67 max :6.82
vs2010 RC1 vb.net :took 125.86 seconds 12.59 seconds average. min:12.34 max 12.78
Conclusion :it is A LOT slow .net than the old and rusty vb6, at last for string.
May be the detail is that in vb6 then strings are single byte, while in .net may be it is a 2 bytes.
Thanks for your comments.
The way VB.NET achieves better performance is, in general, not by doing the same things faster, but by giving you faster ways of doing the same things.
Let me explain …
In my article …
StringBuilder … A New Object in .NET
http://visualbasic.about.com/od/usingvbnet/a/strbldr01.htm
… I demonstrate how the new StringBuilder object is 115 times faster than using String concatenation to do the same things. VB6 doesn’t have a StringBuilder object, however. In order to use it, you have to move up to the object oriented VB.NET way of doing things.
This is the pattern you will see over and over again. VB6 is a fairly simple technical environment and, as such, there will always be things that VB6 can do faster than VB.NET. But .NET can do much, much more than VB6 can do and, if you adopt the .NET way of doing things, it can do them faster.
It’s not dead but its not a big deal language anymore, the new generation comes in the “VS.NET” package, I still remember back in 2002 and 2003 allot of people hated it not because it was something new like C# is today.
Rather it made the day easier to program, most language critics talked about VB as something of disease. I laugh now at how minds change so easily, people have to stop favoring software. You know by now anything by Microsoft is bound to change, either learn to adapt or move onto Linux and or Java.