温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#中内联函数怎么用

发布时间:2022-03-29 11:42:40 来源:亿速云 阅读:228 作者:小新 栏目:开发技术

这篇文章将为大家详细讲解有关C#中内联函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

C++ 中有个内联函数,使用 inline 来修饰函数,编译器就会对其进行优化,将此函数作为代码判断插入到调用处。

函数调用在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参的值复制给形参,接下来还要将函数的返回地址(该地址指明了函数执行结束后,程序应该回到哪里继续执行)放入栈中,最后才跳转到函数内部执行。这个过程是要耗费时间的。

另外,函数执行 return 语句返回时,需要从栈中回收形参和局部变量占用的存储空间,然后从栈中取出返回地址,再跳转到该地址继续执行,这个过程也要耗费时间。

而 C# 中可以通过在函数上使用特性,告诉编译器要对其进行优化,达到相同目的。

    [MethodImpl(MethodImplOptions.AggressiveInlining)]

示例如下:

using System; using System.Diagnostics; using System.Runtime.CompilerServices; class Program {     const int _max = 10000000;     static void Main()     {         int sum = 0;         Stopwatch s1 = Stopwatch.StartNew();         for (int i = 0; i < _max; i++)         {             sum += Method1();         }         s1.Stop();         Stopwatch s2 = Stopwatch.StartNew();         for (int i = 0; i < _max; i++)         {             sum += Method2();         }         s2.Stop();         Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) /             _max).ToString("0.00 ns"));         Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) /             _max).ToString("0.00 ns"));         Console.Read();     }     static int Method1()     {         return "one".Length + "two".Length + "three".Length +             "four".Length + "five".Length + "six".Length +             "seven".Length + "eight".Length + "nine".Length +             "ten".Length;     }     [MethodImpl(MethodImplOptions.AggressiveInlining)]     static int Method2()     {         return "one".Length + "two".Length + "three".Length +             "four".Length + "five".Length + "six".Length +             "seven".Length + "eight".Length + "nine".Length +             "ten".Length;     } }

测试结果:

21.92 ns 3.22 ns

关于“C#中内联函数怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI