问题描述
听说C#不支持inline功能,只是代码在被编译成IL后被有限地使用。请问,C#中有没有其它可以提高函数调用的方法?谢谢。
解决方案
解决方案二:
什么叫"提高函数调用"??????你管的事情貌似有点太多了,C#不是不能支持inline是根本没必要去支持.函数调用的开销不知道你测试过没有,如果你能够计时出10万次调用所花的时间,那说明你的机器早该换了...如果一个操作执行10万次的时间都不能被感知,则这个问题应该交给编译器厂商和系统厂商去考虑要不要,而不是我们这些应用一级的人.除非你是在打算自己写一个C#编译器或JIT编译器..
解决方案三:
刚才在我笔记本上测试10万次无法测量.1000万次都不到一毫秒....因此CPU时间问题基本忽略.至于inline带来的另外一个好处大量调用的时候不消耗线程堆栈,在循环时线程堆栈是一进一出的,不会累加,而C++的inline函数是不支持递归的(也就是多次大量调用只能是循环了..).最后剩下的问题就是线程堆栈一进一出是否产生大量内存碎片,这个暂时找不到测量内存碎片的方法....不过不管怎么说,我觉得这个问题对我们可以100%的忽略.
解决方案四:
确实没啥必要,比起.net环境性能,这个是可以忽略的东西.除非ms自己觉得有必要加,作为应用层这块,忽略这东西是实际的。
解决方案五:
看来c++的inline方法已经过时了C#里面的属性调用都推荐实现get,set。这些函数调用的时间已经不是非常重要的事情了。
解决方案六:
内联一般是10句以内或5句以内的吧,编译时会嵌入,c#没有的,c#必竟不太注重或者说不需要太注重这方面的内容吧,内联的好处就是可重用,有效率等,如果要在c#的话,可能你要考虑用别的,如static之类的吧,但我觉得,这点不需要考虑太多,inline只是在非常大的处理才体现优越性,非常大的意思,我想至少要百万千万级别的运算才能体现吧,而普通函数的性能也不一定会很差,只要你多研究一下,都会有好的解决办法的。程序性能优化往往可以从多方面入手
解决方案七:
学习
解决方案八:
不内联,值类型怎么办啊?
解决方案九:
学习了。
解决方案十:
引用5楼ijunxiong的回复:
内联一般是10句以内或5句以内的吧,编译时会嵌入,c#没有的,c#必竟不太注重或者说不需要太注重这方面的内容吧,内联的好处就是可重用,有效率等,如果要在c#的话,可能你要考虑用别的,如static之类的吧,但我觉得,这点不需要考虑太多,inline只是在非常大的处理才体现优越性,非常大的意思,我想至少要百万千万级别的运算才能体现吧,而普通函数的性能也不一定会很差,只要你多研究一下,都……
+1感觉内联函数主要体现在代码结构的优化上效率提升上感觉意义不大了
解决方案十一:
学习了
解决方案十二:
引用1楼syeerzy的回复:
什么叫"提高函数调用"??????你管的事情貌似有点太多了,C#不是不能支持inline是根本没必要去支持.函数调用的开销不知道你测试过没有,如果你能够计时出10万次调用所花的时间,那说明你的机器早该换了...如果一个操作执行10万次的时间都不能被感知,则这个问题应该交给编译器厂商和系统厂商去考虑要不要,而不是我们这些应用一级的人.除非你是在打算自己写一个C#……
怪不得C#程序这么卡呢,每个人都觉得自己做的总分不影响整体效率
解决方案十三:
引用11楼zhangwuji154的回复:
引用1楼syeerzy的回复:怪不得C#程序这么卡呢,每个人都觉得自己做的总分不影响整体效率
这个问题你不能责怪C#,咱只能说,鱼和熊掌不能兼得.要想开发速度快,开发周期短,必然要用成型的库,这些库的定义是个大而全的东西.各方面都考虑到了.比如在执行某些操作的时候会判断是否溢出是否为null是否在什么范围之内等等.当然了如果你自己写效率可能会更高.因为你知道他这个值的范围只会在什么范围内且不会为null就省去了不少判断.但是c#的库不能这么做,必须要做到周全,因为用它的人写的代码不一定会传递给这个方法什么值.就造成了你认为的性能浪费..想要高精度开发请用汇编/C想要高效率开发,请使用新型语言如C#...
解决方案十四:
引用4楼poson的回复:
看来c++的inline方法已经过时了C#里面的属性调用都推荐实现get,set。这些函数调用的时间已经不是非常重要的事情了。
如果getset代码简单,JIT或许会为你内联优化
解决方案十五:
引用楼主yunsongzh的回复:
听说C#不支持inline功能,只是代码在被编译成IL后被有限地使用。请问,C#中有没有其它可以提高函数调用的方法?谢谢。
是提高函数调用性能吗?想明白内联是什么概念你就知道了..可以把代码难度提高,这样效率自然就提高了.比如一个for循环判断某些东西.可以一次在for循环判断10次然后计数器+=10;这样效率更高些.就是这个意思.想要提高效率,且代码又想省.使用goto语句.这个一般人想不到.呵呵悄悄告诉你.详细请看http://msdn.microsoft.com/zh-cn/library/13940fs2(VS.80).aspx?ppud=4goto语句的用法.
解决方案:
晕08年的帖又有人在那挖坟帖了
解决方案:
学习中。