让我们来纠结一下C#的效率问题
我一直在纠结这个问题:
- C# code
// 有一个函数 private string dosomething(data[] anyarray){ // 例如将数据转换为ascii字符串 // 其他问题先不考虑}// 我在某个函数中 必须要使用这个dosomething 函数//例如里面的代码是这样的public void allowdataArray(any){ if(dosomething(any).indexof("abc")>=0) { return; } otherfunction(dosomething(any));}// 在这个函数中我使用里两次dosomething(any),也就是说我执行了两次dosomething中的代码// 但是我如果这样做public void allowdataArray(any){ string temp=dosomething(any); if(temp.indexof("abc")>=0) { return; } otherfunction(temp);}// 那么表示我执行了一次函数
但是接下来的问题就是 :
使用函数返回值 那么我就会多次运行里面的代码,实际运用中可能会调用多次,那么就会执行多次
如果我使用一个变量来保存这个值,那么就是说我只是执行了一次,但是我又做了新建一个变量,然后对这个变量赋了值,然后又要引用,但是这个途中,我并没有对这个变量进行运算等操作,
那么到底是哪个方式比较快呢?
求解
allowdataArray(any)的使用很频繁的 ,所以我不得不纠结这个问题,或者有没有更好的处理方式?
[解决办法]
只要你调用dosomething就会执行,所以用变量保存结果,后续都访问变量
[解决办法]
没必要纠结。
你认为“引用一个对象进行比较或运算”快,
还是“经过运算得到一个对象,再进行该对象的比较或运算”快?
[解决办法]
这还用想吗?少做了几次运算当然是快的
- C# code
class MyList{ public static int Count { get { Sleep(1000); return 10; } }}void Func(){ int count = MyList.Count; for(int i = 0;i < count;i++) {}}void Func(){ for(int i = 0;i < MyList.Count;i++) {}}
[解决办法]
直接通过anyarray来判断是否需要转换
[解决办法]
[解决办法]
[解决办法]
[解决办法]
用这么点内存换时间是值得的,至于你说的有人跟你说的那个什么有点偏激,是看情况而定的