hexagon logo

CMM Automation Speed C# versus VB6

Hi,

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?

Thanks!
Parents
  • I haven't tested this yet, but this may work for as it returns an IEnumerable object:

    foreach (var PCCommand in PCPart.Commands.NewEnum)
                {
                    if (PCCommand != null)
                    {
                        if (PCCommand.IsTraceField)
                        {
    


    ...Having said that, I can't find anything in the PC-DMIS help documentation covering the 'Commands.NewEnum' piece, so I'm not too hopeful. I think from memory that I couldn't get that working when I first tried so went with the other approach to use the for loop: 'for (int i = 1; i <= PCPart.Commands.Count; i++)'
Reply
  • I haven't tested this yet, but this may work for as it returns an IEnumerable object:

    foreach (var PCCommand in PCPart.Commands.NewEnum)
                {
                    if (PCCommand != null)
                    {
                        if (PCCommand.IsTraceField)
                        {
    


    ...Having said that, I can't find anything in the PC-DMIS help documentation covering the 'Commands.NewEnum' piece, so I'm not too hopeful. I think from memory that I couldn't get that working when I first tried so went with the other approach to use the for loop: 'for (int i = 1; i <= PCPart.Commands.Count; i++)'
Children
No Data