【求解】变量是重复使用性能好,还是重新定义的性能好

沉默又寡言 2017-03-09 09:57:17
举个string变量的例子:
例子1


string abc;

//以下模仿程序处理过程中临时使用变量abc
abc = wcx.getName();
if(abc=="123").....
abc = wbc.getNo();
if(abc=="234")....
abc="ok";



例子2


string abc;

//以下模仿程序处理过程中定义新变量
string tp1 = wcx.getName();
if(tp1=="1")...
string tp2 = wbc.getNo();
if(tp2=="566")...
abc = "ok";


上面2个例子,是重复使用已经声明的变量性能好,
还是重新定义一个新变量性能好?
...全文
289 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
大然然 2017-03-09
  • 打赏
  • 举报
回复
引用 5 楼 zbdzjx 的回复:
最近我也想了一下和楼主类似的一个问题。下面两段代码,那个更好一点。
string s;
for (int i = 0; i < 1000; i++)
{
    s = "ABC" + i.ToString();
    …………
}
for (int i = 0; i < 1000; i++)
{
    string s = "ABC" + i.ToString();
    …………
}
第一个
bwangel 2017-03-09
  • 打赏
  • 举报
回复
你举的String的这个例子太特殊。string是比较特殊的一类对象,不管是重新声明还是用原来的,系统都要重新分配内存。 如果一个创建开销比较大的对象,比如一个文件对象,当然是定义一次反复使用的好。有些还要做成单例。比如和全局配置相关的对象。 而如果是一些结构体,比如int型就无所谓了。
zbdzjx 2017-03-09
  • 打赏
  • 举报
回复
最近我也想了一下和楼主类似的一个问题。下面两段代码,那个更好一点。
string s;
for (int i = 0; i < 1000; i++)
{
    s = "ABC" + i.ToString();
    …………
}
for (int i = 0; i < 1000; i++)
{
    string s = "ABC" + i.ToString();
    …………
}
Poopaye 2017-03-09
  • 打赏
  • 举报
回复
如果是Debug模式,是第一种性能好 但是Release模式,编译器会帮你把能冲用的变量合并掉的,不用你操心
正怒月神 2017-03-09
  • 打赏
  • 举报
回复
一般都选第一种。 但不是强求一个变量用到底。 很多时候,变量的名称含义才是最直观的可读性。
chi742658817 2017-03-09
  • 打赏
  • 举报
回复
你这还涉及不到性能的问题, 最多也只是代码的可读性高不高而已, 你通篇如果只有一个变量, 你自己写的逻辑可能自己看起来没问题, 后期如果隔太久维护的时候,或者别人来看的时候, 自己想想,是不是看着很难受?
  • 打赏
  • 举报
回复
这种级别几乎可以视为无差异了,都是寄存器指令,要运行数亿级才能看出差异吧 这时候考虑更多的是程序的可读性,可维护性
wanghui0380 2017-03-09
  • 打赏
  • 举报
回复
string 是比较特殊的,使用这个例子里没有什么讨论价值。 如果是其他的正常情况,在一些运行并发比较大的东西里面,new一个大对象比较消耗(这是1个原因,另一个原因快速涌入的对象导致释放不及时,比如频繁GDI+操作里另人郁闷的gdi+常规错误,内存溢出错误)通常才用原型模式,池化模式,缓冲模式 当然还是跟程序规模有关系,你程序的规模没有达到那个级别就不用考虑这样的问题,程序达到那个规模了,你就是不去考虑都不行(因为他会异常) ps:俺们这里和博客园那些凡是就极端的言论不一样,俺们绝对不会告诉你写代码就必须原型,池化,缓冲,俺们只会告诉你到那个规模了你程序自然会异常,你自然会去做这些事情
  • 打赏
  • 举报
回复
汇编语言比c#语言程序“性能好”,把几千行代码写成一个过程“性能好”,从来不写for 1000循环语句而是copy复制1000遍代码也许“性能好”......这些都是永远存在不断爆出来的吹毛求疵的说法。自己测试,结合自己的实际开发的“效率”来看这些说法的经济性是否靠谱,你自己最明白怎么回事儿。
  • 打赏
  • 举报
回复
每一个人理解方式不同,所以对于吹毛求疵的问题,以测试为准。只要能有亲自动手写测试的习惯,不管你结论是什么,讨论一下结论和测试过程都是好的;只要是仅仅靠别人作为圣人来说服自己、靠书本上的教条过活的,都是不太行的。
  • 打赏
  • 举报
回复
你自己测试一下哪一个更快,省几毛钱程序价值,对编程开发有几毛钱影响。 你的代码增加测试代码,不就是写几行嘛?!

110,502

社区成员

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

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

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