English

Problem: Using ProgID instead of CLSID for calling a COM component can affect performance.

Description

Using ProgID instead of CLSID for calling a COM component can affect performance.

COM CoClasses are identified by a globally unique identifier (GUID). There are two formats for the GUID for a CoClass: a CLSID (class identifier) and a ProgID (PROGrammatic Identifier).

The CLSID is a 128-bit number, in hex, within a pair of curly braces, whereas the ProgID is a text alias for a CLSID; it’s a string composed of the name of the project used to make the extension and the class name of the extension.
Refer this link for further details: IApplication.FindExtensionByCLSID Method

The following graphic shows the folder hierarchy for a registered COM component in the registry: 'esriSpatialAnalystUI.SAExtension' is a ProgID, and '{3C5059FE-9F15-401A-94ED-EED914D73E3E}' is a CLSID.
[O-Image]

Cause

There are two potential issues here:

1) Using ProgID instead of the CLSID for loading the COM component makes the path deeper (refer the graphic above), which could result in slow access, consequently affecting performance.

2) There may be two COM components with the same ProgID; but the CLSID is always unique.

Solution or Workaround

Use the CLSID, instead of the ProgID, whenever possible; one of the easiest ways to find the CLSID for a command is to search the system registry using the ProgID.