C#-与在单个方法中使用类型检查相比,具有不同类型的重载方法是否具有更高的性能?

问题描述 投票:1回答:1

说我有这个:

    public void DoThing (string text)
    {
        DoThingWithText(text);
    }

    public void DoThing (int number)
    {
        DoThingWithNumbers(number);
    }

并与之比较:

    public void DoThing (object obj)
    {
        if (obj is string text)
            DoThingWithText(text);

        if (obj is int number)
            DoThingWithNumbers(number);
    }

这里是否会有性能差异,如果有,差异有多大?

c# performance overloading typechecking
1个回答
1
投票

会有性能差异。使用类型特定的方法会更快,但是除非每秒执行数百次,否则应该不会有太大的区别。

您使方法和类更具动态性和通用性,它将在处理它的计算机上占用更多CPU资源。我想如果它在运行缓慢的计算机上运行可能会有所不同。

如DavidG所建议,您可以尝试自己运行性能测试。您可以先存储DateTime.Now,然后再运行一堆这些方法以及使用对象的类型测试进行另一项测试,然后在输出差异后使用新的DateTime.Now。

© www.soinside.com 2019 - 2024. All rights reserved.