Questions tagged «il»

1
为什么C#编译器将此!=比较翻译为>比较?
我偶然发现C#编译器启用了此方法: static bool IsNotNull(object obj) { return obj != null; } …进入此CIL: .method private hidebysig static bool IsNotNull(object obj) cil managed { ldarg.0 // obj ldnull cgt.un ret } …或者,如果您希望查看反编译的C#代码,请执行以下操作: static bool IsNotNull(object obj) { return obj > null; // (note: this is not a valid C# expression) } 怎么把这些!=翻译成“ …
147 c#  cil  il  notnull  binary-operators 

3
静态方法与实例方法的性能
我的问题与静态方法与实例方法的性能特征及其可伸缩性有关。对于这种情况,假设所有类定义都在单个程序集中,并且需要多个离散的指针类型。 考虑: public sealed class InstanceClass { public int DoOperation1(string input) { // Some operation. } public int DoOperation2(string input) { // Some operation. } // … more instance methods. } public static class StaticClass { public static int DoOperation1(string input) { // Some operation. } public static int DoOperation2(string …

3
为什么我的应用程序会花费其生命的24%进行空检查?
我有一个性能至关重要的二进制决策树,我想将这个问题集中在一行代码上。下面是二叉树迭代器的代码,其中包含针对它进行性能分析的结果。 public ScTreeNode GetNodeForState(int rootIndex, float[] inputs) { 0.2% ScTreeNode node = RootNodes[rootIndex].TreeNode; 24.6% while (node.BranchData != null) { 0.2% BranchNodeData b = node.BranchData; 0.5% node = b.Child2; 12.8% if (inputs[b.SplitInputIndex] <= b.SplitValue) 0.8% node = b.Child1; } 0.4% return node; } BranchData是一个字段,而不是属性。我这样做是为了防止不被内联的风险。 BranchNodeData类如下: public sealed class BranchNodeData { /// …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.