博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity减少GC Alloc之 使用for替换foreach
阅读量:6097 次
发布时间:2019-06-20

本文共 1407 字,大约阅读时间需要 4 分钟。

Unity中foreach会增加GC

unity中for效率比foreach高?

在unity中使用foreach遍历集合会增加gc alloc,参考的话题:

foreach造成gc alloc

 

C#遍历集合方法

ToArray

ToArray等于把Dictionary拷贝了一份

 

使用Linq

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

参考:

 

方法代码

public static void Main(string[] args){    Dictionary
dictionary =new Dictionary
(); dictionary["engine1"] = "unity"; dictionary["engine2"] = "cocos"; //方法一 var array = dictionary.ToArray(); for (int idx = 0; 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 = 0; 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
dict = new Dictionary
(); dict.Add("C#", "4.5"); dict.Add("Java", "8"); dict.Add("Python", "3"); Dictionary
.Enumerator etor = dict.GetEnumerator(); while (etor.MoveNext()) { Console.WriteLine("key = {0}, value = {1}",etor.Current.Key, etor.Current.Value); }}

 

转载于:https://www.cnblogs.com/zhaoqingqing/p/5059342.html

你可能感兴趣的文章
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html
查看>>
hadoop(6)---mapred-site.xml 详解以及常用配置。
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
codeforce 599B Spongebob and Joke
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
9、Dubbo-配置(4)
查看>>
前端第七天
查看>>
BZOJ 2190[SDOI2008]仪仗队
查看>>
图解SSH原理及两种登录方法
查看>>
[转载] 七龙珠第一部——第058话 魔境圣地
查看>>
【总结整理】JQuery基础学习---样式篇
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
JSP的隐式对象
查看>>