首页 新闻 赞助 找找看

C#中封装方法后运算速度问题求助

0
[已解决问题] 解决于 2016-09-09 08:20
复制代码
     public static int BD(int[] arr,Dictionary<int,int> dic)
        {
            int a = 0;
            foreach(var ka in arr)
                foreach (var kv in dic)
                    if (ka==kv.Value)
                    {
                        a= 1;
                        return a;
                    }
            return a;
        }
复制代码

求解:经测试在C#中调用方法都非常耗时,如代码所示的方法调用耗时00:00:00.0002608如果不封装方法同样是这个代码耗时00:00:00.0000065,求教高手调用方法如何提速?

梦天涯的主页 梦天涯 | 初学一级 | 园豆:103
提问于:2016-09-07 22:26
< >
分享
最佳答案
0

方法调用的耗时真的是性能调优的关键点么,能产生大的收益么。我想是不会的。

比如这个方法,要优化,从代码上去优化比实现内联函数要有收益的多。比如空间换时间,比如用C++。

另 可以看一下:TargetedPatchingOptOut

奖励园豆:5
czd890 | 专家六级 |园豆:14292 | 2016-09-08 00:17
其他回答(3)
0

arr和dic哪个count多?

而且这个你明显可以对dic只遍历1次,第一次把dic的key和value对调塞到新的dictionary中去,重复的忽略。然后对arr做遍历,直接用dictionary的索引方式直接定位数据。

Daniel Cai | 园豆:10424 (专家六级) | 2016-09-08 09:17
0

直接写汇编速度会更快的,有追求的人才不写C#呢。

爱编程的大叔 | 园豆:30839 (高人七级) | 2016-09-08 09:27
0
        public static int BD(int[] arr, Dictionary<int, int> dic)
        {
            var a = 0;
            var set = new HashSet<int>(dic.Values);
            if (arr.Any(ka => set.Contains(ka)))
            {
                a = 0;
            }
            return a;
        }
Mirck | 园豆:128 (初学一级) | 2016-09-08 09:41

if 里面 a=1;

支持(0) 反对(0) Mirck | 园豆:128 (初学一级) | 2016-09-08 09:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册