代码之家  ›  专栏  ›  技术社区  ›  Matthew Scharley

在运行时,与扩展方法相关联的开销是多少?(.NET)[重复]

  •  7
  • Matthew Scharley  · 技术社区  · 16 年前


    Extension Method Performance

    在CPU和/或内存访问受限的数据处理应用程序中,单线扩展方法的开销是否值得注意?它是否比普通的函数调用高,或者只是一个编译器/IDE抽象?例如,如果每秒调用的次数超过数千次,以下函数是否不明智:

    public static void WriteElementString(this XmlTextWriter writer, string name, int data)
    {
        writer.WriteElementString(name, data.ToString());
    }
    
    2 回复  |  直到 9 年前
        1
  •  21
  •   Jon Skeet    16 年前

    没有开销。它只是一个用不同语法调用的静态方法。生成的IL只是一个普通调用。

    换句话说,扩展方法的开销与

    writer.WriteElementString(name, data);
    

    XmlWriterExtensions.WriteElementString(writer, name, data);
    

    ... 因为生成的IL将完全相同。

    没有什么

    实际的 在这种情况下,击中的是猜测;“扩展方法只是编译器中带有语法糖的普通方法”不是猜测。

        2
  •  3
  •   Akash Kava    16 年前

    推荐文章