Tag: optimization

C#内联属性吗?

C#内联访问属性吗? 我知道内联的JIT有32字节(指令?)限制,但它是内联属性还是只是纯方法调用?

在什么级别C#编译器或JIT优化应用程序代码?

我想知道这些信息以减少我的代码大小,所以我不会浪费时间来优化将由编译器或JIT完成的事情。 例如: 如果我们假设编译器内联调用属性的get函数,那么我不必将返回值保存在局部变量中以避免函数调用。 我想推荐一个描述正在发生的事情的好参考?

entity framework4中的左外连接太多了?

我有一个产品实体,它有0或1个“BestSeller”实体。 出于某种原因,当我说: db.Products.OrderBy(p => p.BestSeller.rating).ToList(); 我得到的SQL有一个“额外的”外连接(下图)。 如果我添加第二个0或1关系,并按两者排序,那么我得到4个外连接。 似乎每个这样的实体产生2个外连接而不是一个。 LINQ to SQL完全按照您的预期运行,没有额外的连接。 有没有其他人经历过这个,或者知道如何修复它? SELECT [Extent1].[id] AS [id], [Extent1].[ProductName] AS [ProductName] FROM [dbo].[Products] AS [Extent1] LEFT OUTER JOIN [dbo].[BestSeller] AS [Extent2] ON [Extent1].[id] = [Extent2].[id] LEFT OUTER JOIN [dbo].[BestSeller] AS [Extent3] ON [Extent2].[id] = [Extent3].[id] ORDER BY [Extent3].[rating] ASC

为什么String.Concat没有针对StringBuilder.Append进行优化?

我发现常量字符串表达式的连接由编译器优化为一个字符串。 现在使用只在运行时知道字符串的字符串连接,为什么编译器不优化循环中的字符串连接和超过10个字符串的连接以使用StringBuilder.Append ? 我的意思是,这是可能的,对吗? 实例化StringBuilder并进行每个连接并将其转换为Append()调用。 有什么理由应该或不能优化? 我错过了什么?