草庐IT

OPTIMIZATION

全部标签

c# - 清除 .NET 的 StringBuilder 内容的最佳方法

我想问一下您认为清除内容以重用StringBuilder的最佳方法(持续时间更少/消耗资源更少)。想象一下以下场景:StringBuildersb=newStringBuilder();foreach(varwhateverinwhateverlist){sb.Append("{0}",whatever);}//Performsomestuffwithsb//Clearstringbuilderhere//Populatestringbuilderagaintoperformmoreactionsforeach(varwhatever2inwhateverlist2){sb.Appen

c# - 清除 .NET 的 StringBuilder 内容的最佳方法

我想问一下您认为清除内容以重用StringBuilder的最佳方法(持续时间更少/消耗资源更少)。想象一下以下场景:StringBuildersb=newStringBuilder();foreach(varwhateverinwhateverlist){sb.Append("{0}",whatever);}//Performsomestuffwithsb//Clearstringbuilderhere//Populatestringbuilderagaintoperformmoreactionsforeach(varwhatever2inwhateverlist2){sb.Appen

c# - 为什么我的应用程序将 24% 的生命周期用于空值检查?

我有一个性能关键的二元决策树,我想将这个问题集中在一行代码上。下面是二叉树迭代器的代码以及对其运行性能分析的结果。publicScTreeNodeGetNodeForState(introotIndex,float[]inputs){0.2%ScTreeNodenode=RootNodes[rootIndex].TreeNode;24.6%while(node.BranchData!=null){0.2%BranchNodeDatab=node.BranchData;0.5%node=b.Child2;12.8%if(inputs[b.SplitInputIndex]BranchDat

c# - 为什么我的应用程序将 24% 的生命周期用于空值检查?

我有一个性能关键的二元决策树,我想将这个问题集中在一行代码上。下面是二叉树迭代器的代码以及对其运行性能分析的结果。publicScTreeNodeGetNodeForState(introotIndex,float[]inputs){0.2%ScTreeNodenode=RootNodes[rootIndex].TreeNode;24.6%while(node.BranchData!=null){0.2%BranchNodeDatab=node.BranchData;0.5%node=b.Child2;12.8%if(inputs[b.SplitInputIndex]BranchDat

c# - 是否可以将 (x == 0 || x == 1) 简化为单个操作?

所以我试图用尽可能紧凑的函数编写斐波那契数列中的第n个数:publicuintfibn(uintN){return(N==0||N==1)?1:fibn(N-1)+fibn(N-2);}但我想知道我是否可以通过更改使它更加紧凑和高效(N==0||N==1)成一个单一的比较。是否有一些奇特的移位操作可以做到这一点? 最佳答案 有多种方法可以使用按位算术来实现算术测试。你的表情:x==0||x==1在逻辑上等同于以下每一个:(x&1)==x(x&~1)==0(x|1)==1(~x|1)==(uint)-1x>>1==0奖励:x*x==x

c# - 是否可以将 (x == 0 || x == 1) 简化为单个操作?

所以我试图用尽可能紧凑的函数编写斐波那契数列中的第n个数:publicuintfibn(uintN){return(N==0||N==1)?1:fibn(N-1)+fibn(N-2);}但我想知道我是否可以通过更改使它更加紧凑和高效(N==0||N==1)成一个单一的比较。是否有一些奇特的移位操作可以做到这一点? 最佳答案 有多种方法可以使用按位算术来实现算术测试。你的表情:x==0||x==1在逻辑上等同于以下每一个:(x&1)==x(x&~1)==0(x|1)==1(~x|1)==(uint)-1x>>1==0奖励:x*x==x

c# - C# 中的内联函数?

如何在C#中执行“内联函数”?我不认为我理解这个概念。它们像匿名方法吗?像lambda函数?注意:答案几乎完全与inlinefunctions的能力有关,即“用被调用者的主体替换函数调用站点的手动或编译器优化。”如果您对anonymous(a.k.a.lambda)functions感兴趣,请参阅@jalf'sanswer或Whatisthis'Lambda'everyonekeepsspeakingof?. 最佳答案 最后在.NET4.5中,CLR允许使用MethodImplOptions.AggressiveInlining提示

c# - C# 中的内联函数?

如何在C#中执行“内联函数”?我不认为我理解这个概念。它们像匿名方法吗?像lambda函数?注意:答案几乎完全与inlinefunctions的能力有关,即“用被调用者的主体替换函数调用站点的手动或编译器优化。”如果您对anonymous(a.k.a.lambda)functions感兴趣,请参阅@jalf'sanswer或Whatisthis'Lambda'everyonekeepsspeakingof?. 最佳答案 最后在.NET4.5中,CLR允许使用MethodImplOptions.AggressiveInlining提示

c# - 连接字符串的最有效方法?

连接字符串的最有效方法是什么? 最佳答案 RicoMariani,.NET性能大师,拥有anarticle在这个问题上。这并不像人们想象的那么简单。基本建议是这样的:Ifyourpatternlookslike:x=f1(...)+f2(...)+f3(...)+f4(...)that'soneconcatandit'szippy,StringBuilderprobablywon'thelp.Ifyourpatternlookslike:if(...)x+=f1(...)if(...)x+=f2(...)if(...)x+=f3(.

c# - 连接字符串的最有效方法?

连接字符串的最有效方法是什么? 最佳答案 RicoMariani,.NET性能大师,拥有anarticle在这个问题上。这并不像人们想象的那么简单。基本建议是这样的:Ifyourpatternlookslike:x=f1(...)+f2(...)+f3(...)+f4(...)that'soneconcatandit'szippy,StringBuilderprobablywon'thelp.Ifyourpatternlookslike:if(...)x+=f1(...)if(...)x+=f2(...)if(...)x+=f3(.