C# 静态函数和非静态函数哪个效率高

sytu_hzj 2009-06-16 02:02:50
如题
...全文
1426 58 打赏 收藏 转发到动态 举报
写回复
用AI写文章
58 条回复
切换为时间正序
请发表友善的回复…
发表回复
shadow_left 2011-09-07
  • 打赏
  • 举报
回复
路过,不错
bestcxl 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 ahbian 的回复:]
简言之,从 OO 讲,静态方法是无状态的,实例方法是有状态的。

静态方法当然要略快一点点点点点点...

所以,如果方法无状态,建议以静态方式实现。

若不是这样,也没必要有一个“静态”概念了。
[/Quote]

能解释下状态吗?
gistop 2011-01-02
  • 打赏
  • 举报
回复
好帖子,学习了
jscn123789abc 2009-06-21
  • 打赏
  • 举报
回复
很多都是理论的评估,性能差别具体测试起来很麻烦的。。。
ld1201 2009-06-21
  • 打赏
  • 举报
回复
直接调用方法效率是一样的。
非静态的方法只是在实例类的时候需要一定时间。
AhBian 2009-06-21
  • 打赏
  • 举报
回复
简言之,从 OO 讲,静态方法是无状态的,实例方法是有状态的。

静态方法当然要略快一点点点点点点...

所以,如果方法无状态,建议以静态方式实现。

若不是这样,也没必要有一个“静态”概念了。

codelabs 2009-06-18
  • 打赏
  • 举报
回复
有时候不能单纯的比效率。比如你要考虑你是否要用到上面定义的非静态字段,或者有没有必要因为要使用一个静态函数,就把所有该函数中要用的变量都定义成静态函数。
我觉得这个问题要从他们的区别和用处说,而不是单纯的从效率说。
静态函数和非静态函数的区别,从内部角度来说,在调用的时候,非静态函数会先压一个当前对象指针(this),然后压其他参数调用函数,这样可以保证可 以找到对象地址,而静态少了压当前指针这一步(因为它本来也没有当前对象),而进行直接调用。

在类实例化的时候,整个类应该是被分成了两部分,一部分是静态字段和方法,另一部分是实例字段,当然每一部分都有各自的索引和指针,前者在一个线程内只有一份,后者是线程中每个实例有一份。
beikehanbao23 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 superzxf 的回复:]
对象的实例化指的是对象数据的实例化,而不是对象本身的实例化
也就是创建一个对象,需要实例化的是对象的数据,而不是对象的成员方法
不管什么对象在内存都是通过代码段和数据段来分开存储的,这两个东西是分开的,所谓的面向对象只是对用户的展现形式,并不是系统底层的真是情况,对cpu来说没有任何的对象,只有代码和数据。
所以对象的方法本身在内存中只有一个副本,不管是否创建对象的实例始终存在与程序的代码空间

[/Quote]
相对静态方法来说实例化只是多了一次实例化的时间消耗
个人认为如果实例化放入循环那就是有一定的影像
wenblue7 2009-06-18
  • 打赏
  • 举报
回复
热帖啊
顶起
moonshineidolon 2009-06-18
  • 打赏
  • 举报
回复
静态高占内存

非晶态省内存
sytu_hzj 2009-06-18
  • 打赏
  • 举报
回复
晕,目前为止,我的帖子被回的最多的一次
ndsc20090609 2009-06-17
  • 打赏
  • 举报
回复
有时静态高,有时非静态高。
wewei123shangdawei 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 taoistong 的回复:]
凡事不能一概而论

如果机器性能好,静态函数多一些也没有什么关系
但是如果机器性能不好,静态函数太多了,使服务器达到瓶颈了。性能就不提高了
[/Quote]
机器的性能重要,但程序的性能优化也是很重要的
kunine 2009-06-17
  • 打赏
  • 举报
回复
實踐告知:靜態方法更高。
cmfl3483 2009-06-17
  • 打赏
  • 举报
回复
静态方法使用起来方便,不用实例化
bingbingw 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xiaoyaxin 的回复:]
静态就象做烧饼,先做好了卖的时候直接卖,卖的时候省事。非静态有点像做煎饼,做一个买一个,不糟践。
[/Quote]
介位对小吃有研究。。。
wanglee 2009-06-17
  • 打赏
  • 举报
回复
果然很多牛人回答都很经典,先收藏了
柳晛 2009-06-17
  • 打赏
  • 举报
回复
是否Static,要看实际应用,我认为开发效率与维护成本比这个效率所创造的价值更高。
通常软件提高时间效率或空间效率不在这些细枝末节上,纯属个人意见。
Error_Code 2009-06-17
  • 打赏
  • 举报
回复
静态不静态 岂止是效率的问题?
加载更多回复(36)

110,587

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧