Out of curiosity: *how does the CLR dispatch virtual method calls to interface members to the correct implementation?*

I know about the VTable that the CLR maintains for each type with method slots for each method, and the fact that for each interface it has an additional list of method slots that point to the associated interface method implementations. But I don't understand the following: how does the CLR efficiently determine which interface method slot list to pick from the type's VTable?

The article [Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects](https://web.archive.org/web/20150515023057/https://msdn.microsoft.com/en-us/magazine/cc163791.aspx) from the May 2005 issue of the MSDN Magazine talks about a process-level mapping table IVMap indexed by interface ID. Does this mean that all types in the same process have the same pointer to the same IVMap?

It also states that:

> 
> If `MyInterface1` is implemented by two classes, there will be two
>  entries in the IVMap table. The entry will point back to the beginning
>  of the sub-table embedded within the `MyClass` method table.
> 
> 
> 

How does the CLR know which entry to pick? Does it do a linear search to find the entry that matches the current type? Or a binary search? Or some kind of direct indexing and have a map with possibly many empty entries in it?

I've also read the chapter on Interfaces in CLR via C# 3rd edition but it does not talk about this. Therefore, the answers to [this other question](https://stackoverflow.com/questions/3262428/how-does-net-clr-implement-an-interface-internally) do not answer my question.