有没有关于 TrySZIndexOf 的文档?

Is there any documentation for TrySZIndexOf?

我正在查看 Generic List in Reference Source. I wanted to find out if that method has some clever way of finding the item to be removed that is faster than just iterating through all the items (the answer appears to be "no"). I saw that List.Remove calls Array.IndexOf 的 Remove 方法的实现来查找项目,Array.IndexOf 首先尝试使用名为 TrySZIndexOf 的本机方法来查找项目。

// Try calling a quick native method to handle primitive types.
int retVal;
bool r = TrySZIndexOf(array, startIndex, count, value, out retVal);
if (r)
    return retVal;

TrySZIndexOf 的声明是

private static extern bool TrySZIndexOf(Array sourceArray, int sourceIndex, int count, Object value, out int retVal);

如果 TrySZIndexOf returns 为假,Array.IndexOf 遍历数组中的所有项目。

评论表明 TrySZIndexOf 是搜索基本类型数组的优化方法。任何人都可以描述此方法的工作原理,或指向一些文档吗?

总结 Magnus 发布的link:

TrySZIndexOf 使用本机方法,如果您使用的是本机类型,则将 memchr 用于适合单个字节的类型或另一个本机实现的函数用于宽度大于 1 的类型byte 以快速找到您要查找的项目的地址。

方法 returns 如果类型不是本机类型(或者函数不支持)则为 false。在那种情况下,只有暴力尝试迭代 list/array.