I am currently converting an application that automated PC-DMIS in VB6 over to C#. Our application does the following:
1) Ask the user what PC-DMIS program (i.e. a PRG file) they want to run
2) Launch PC-DMIS passing in the name of the program file selected
3) Get PC-DMIS to run a series of measurements on a Scirocco machine
4) Import the measurements from PC-DMIS into the application for processing
5) Process the results (basically we compare the measurements to a baseline, then insert the deviation into a database)
What I observed is that for any program (we've tried quite a few and this seems to be consistently happening), the VB6 application takes approximately 30 seconds to perform step 4, whereas the C# application takes around 2.5 minutes.
Can anyone help with the following questions please?
1) We directly ported the code from the legacy VB6 application to C# so the new program isn't doing anything different from what the old VB6 one used to do, so why does C# take so much longer than VB6 to perform the import?
2) Is there any way to speed it up, e.g. I think I read something on a forum that VB.NET may be faster, but I can't find anything technical from Microsoft to support that so I can't really justify burning a lot of hours to convert from C# to VB.NET in case it is the same speed?
If the conversion from VB6 is being done correctly, there should be little if any performance difference between a C# or VB.NET application. At the end of the day, either language will compile into identical MSIL so long as the code is functionally the same. I would recommend taking a closer look at the methods being called in the offending part of your C# application to make sure they are
functionally (rather than
syntactically) identical to what is in the VB6 application, and don't conflict with built-in functionality in .NET (such as garbage collection.)
If you are able to post some excerpts from the offending code, we may be able to offer more help.
If the conversion from VB6 is being done correctly, there should be little if any performance difference between a C# or VB.NET application. At the end of the day, either language will compile into identical MSIL so long as the code is functionally the same. I would recommend taking a closer look at the methods being called in the offending part of your C# application to make sure they are
functionally (rather than
syntactically) identical to what is in the VB6 application, and don't conflict with built-in functionality in .NET (such as garbage collection.)
If you are able to post some excerpts from the offending code, we may be able to offer more help.