Unity中foreach会增加GC

unity中for效率比foreach高?

在unity中使用foreach遍历集合会增加gc alloc,参考的话题:作为Unity3D的脚本而言,c#中for是否真的比foreach效率更高?

foreach造成gc alloc

Unity Mono的foreach造成GC Alloc的BUG与实测

C#遍历集合方法

ToArray

ToArray等于把Dictionary拷贝了一份

使用Linq

Enumerable.ElementAt<TSource>  (IEnumerable<TSource>, Int32)

参考:https://msdn.microsoft.com/zh-cn/library/bb299233%28v=vs.110%29.aspx

方法代码

public static void Main(string[] args)
{
Dictionary<string,string> dictionary =new Dictionary<string, string>();
dictionary["engine1"] = "unity";
dictionary["engine2"] = "cocos"; //方法一
var array = dictionary.ToArray();
for (int idx = ; idx < array.Count(); idx++)
{
var itemKey = array[idx].Key;
var itemValue = array[idx].Value;
Console.Write("key:{0} ,value:{1}\n", itemKey, itemValue);
} //方法二
for (int index = ; index < dictionary.Count; index++)
{
//根据索引获取
var item = dictionary.ElementAt(index);
var itemKey = item.Key;
var itemValue = item.Value;
Console.Write("\nkey:{0} ,value:{1}\n", itemKey, itemValue);
} }

GetEnumerator(Unity推荐使用)

static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("C#", "4.5");
dict.Add("Java", "");
dict.Add("Python", "");
Dictionary<string, string>.Enumerator etor = dict.GetEnumerator();
while (etor.MoveNext())
{
Console.WriteLine("key = {0}, value = {1}",etor.Current.Key, etor.Current.Value);
}
}

最新文章

  1. ABySS非root权限安装
  2. 集合List内容
  3. jquery中ajax 从前端到后端 完整过程解析
  4. Lucene.net 全文检索 盘古分词
  5. C语言中的深拷贝和浅拷贝
  6. OpenERP中的会计凭证
  7. UIImageView 点击放大缩小
  8. 你应该知道的9个优秀的CSS框架
  9. Android和iOS隐藏状态条
  10. centos 配置NFS服务器
  11. [转载]删除所有的.svn文件夹
  12. UISlider的使用
  13. CSS实现table td中文字的省略与显示
  14. Block 代替for循环
  15. Zookeeper 2、Zookeeper的安装和配置(集群模式)
  16. spring postconstruct
  17. cc2540 cc2541 低功耗实測和总结-与注意事项 - 低功耗小于10uA
  18. [LeetCode]题解:005-Longest Palindromic Substring优化
  19. 【19道XSS题目】不服来战!
  20. 浅述 Java 并发

热门文章

  1. 在不知下面有几个元素的时候,要去除最后一个元素的下边框jquery代码
  2. AE_复制当前图层
  3. 如何在SharePoint2010中创建自定义电子邮件警报处理程序
  4. SharePoint 2013 JavaScript 对象判断用户权限
  5. BT5 &amp; Kali Linux 网卡选择
  6. Gradle基础
  7. 【代码笔记】iOS-iCarouselDemo
  8. 怎么样使用yum来安装、卸载jdk
  9. vs2013编译boost1.55.0 32/64位
  10. First glance in Go