IEnumerable <T>和"yield return"性能问题

Mig*_*uel 3 c# ienumerable list

下午好,

我正在写一个简单的词法分析器,它基本上是这个的修改版本.获取每个令牌后,我需要执行轻微的修改并重新分析它以重新检查它的类型.当然,在词法分析之后,我需要重新使用整个令牌列表来对其进行一种"解析".我的问题是如果在词法分析器中使用IEnumerable<Token>yield return语句可以使整个程序的性能变慢...是否最好使用a List<Token>,迭代地构建列表并使用正常return语句?如何迭代IEnumerable/ List?哪一个更快?

非常感谢你.

Han*_*ant 5

你问的是错误的问题,你应该更担心正则表达式的成本.枚举令牌只是其中的一小部分,优化代码的速度可能只有两倍,但只能将程序性能提高1%.

编写代码,对其进行分析,您将知道如何为版本2执行操作.鉴于这些工具在"人工时间"运行(当程序需要20毫秒时,程序需要两倍时没有明显的差异),可能的结果是"没有必要".