TOGOUTECH

performance

全部标签

c# - 在 SQL Server 中使用 sql_variant 而不是 varchar 有什么好处吗?

我目前有一个数据库表设置如下(EAV-业务原因有效):Id-整数(PK)键-唯一,varchar(15)值-varchar(1000)这允许我将混合值作为键/值对添加到我的数据库中。例如:1|'SomeText'|'HelloWorld'2|'SomeNumber'|'123456'etc.在我的C#代码中,我使用ADO.Net使用reader.GetString(2);将值检索为字符串,然后让我的代码在别处根据需要转换它,例如...Int32.ParseInt(myObj.Value);。我正在考虑通过可能将值列更改为s

c# - 构造内存 hack 以重叠对象引用 - 这可能吗?

我猜这个问题的答案将是“这不可能,切换到C++”。但我想我还是会把它扔出去。我正在处理一个巨大的二叉树。我有一个结构数组来表示分支节点,在遍历树时,我使用这些结构来帮助处理内存的局部性。为了节省一点内存,从而提高缓存的局部性,我正在研究重叠叶节点的对象引用。该对象引用将指向所有叶数据。基本上是这样的:[StructLayout(LayoutKind.Explicit)]structBranchData{[FieldOffset(0)]//1byteinternalbyteSplitIndex;[FieldOffset(1)]//4bytesinternalfloatSplitValue

c# - 日志文件的并行 GZip 解压缩 - 调整 MaxDegreeOfParallelism 以获得最高吞吐量

我们每天有多达30GB的GZip日志文件。每个文件包含100.000行,压缩后大小在6到8MB之间。已剥离解析逻辑的简化代码利用了Parallel.ForEach循环。在双NUMA节点、32个逻辑CPU盒(IntelXeonE7-2820@2GHz)上,MaxDegreeOfParallelism处理峰值的最大行数:usingSystem;usingSystem.Collections.Concurrent;usingSystem.Linq;usingSystem.IO;usingSystem.IO.Compression;usingSystem.Threading.Tasks;nam

c# - 将 Roslyn Emit 方法与 ModuleBuilder 而不是 MemoryStream 结合使用

我在使用Roslyn编译为动态程序集时遇到了性能问题。编译大约需要3秒,而使用CodeDom编译器编译相同代码需要大约300毫秒。这是我用来进行编译的代码的简化版本:varcompilation=CSharpCompilation.Create("UserPayRules.dll",syntaxTrees,assembliesToAdd);using(varstream=newMemoryStream()){stopWatch.Start();varresult=compilation.Emit(stream);stopWatch.Stop();Debug.WriteL

c# - 您能否使用 Mono/LLVM 生成比使用 Microsoft 的 C# 编译器更快的 .NET 应用程序?

MonowithLLVM项目能够使用LLVM编译器后端,它有一些非常强大的优化来编译C#.NET项目,这使得它在计算密集型应用程序中的运行速度提高了大约20%。MonoisnowabletouseLLVMasabackendforcodegenerationinadditiontoMono'sbuilt-inJITcompiler.ThisallowsMonotobenefitfromallofthecompileroptimizationsdoneinLLVM.ForexampletheSciMarkscoregoesfrom482to610.那么是否可以将现有的C#.NET

c# - 为什么我的 C# 程序在分析器中速度更快?

我有一个相对较大的系统(到目前为止约25000行)用于监控与radio相关的设备。它使用最新版本的ZedGraph显示图表等。该程序是在VS2010和Win7上使用C#编码的。问题是:当我从VS中运行程序时,它运行缓慢当我从内置的EXE运行程序时,它运行缓慢当我通过PerformanceWizard/CPUProfiler运行该程序时,它运行速度非常快。当我从构建的EXE运行程序,然后启动VS并将分析器附加到任何其他进程时,我的程序会加速!我希望程序总是运行得那么快!解决方案中的每个项目都设置为RELEASE,调试非托管代码禁用,定义调试和跟踪常量禁用,优化代码-我尝试过,警告级别-我

c# - C# 编译器和 C++/CLI 编译器的输出之间的差异

我有一个WPF应用程序,它在大型数据集之间进行大量匹配,目前它使用C#和LINQ来匹配POCO并在网格中显示。随着包含的数据集数量和数据量的增加,我被要求查看性能问题。我今晚测试的假设之一是,如果我们将一些代码转换为C++CLI,是否会有实质性差异。为此,我编写了一个简单的测试来创建一个List<>有5,000,000个项目,然后做一些简单的匹配。基本的对象结构是:publicclassCsClassWithProps{publicCsClassWithProps(){CreateDate=DateTime.Now;}publiclongId{get;set;}public

c# - 如何使用 Windows 性能分析器查看 EventSource 创建的 ETW 事件?

我想使用EventSource触发ETW事件并使用WindowsPerformanceAnalyzer查看它们。我有一个基本的EventSource:[EventSource(Name="BasicEventSource")]publicclassETWLogger:EventSource{#ifDEBUGprivateconstboolThrowOnError=true;#elseprivateconstboolThrowOnError=false;#endifprivateETWLogger(boolthrowOnError):base(throwOnError){

C#:虚函数调用甚至比委托(delegate)调用更快?

我刚好遇到一个代码设计问题。比如说,我有一个"template"方法可以调用一些可能“改变”的函数。一个直观的设计是遵循“模板设计模式”。将更改函数定义为要在子类中覆盖的“虚拟”函数。或者,我可以只使用没有“虚拟”的委托(delegate)函数。委托(delegate)函数被注入(inject),以便它们也可以被定制。最初,我认为第二种“委托(delegate)”方式会比“虚拟”方式更快,但一些代码片段证明它是不正确的。在下面的代码中,第一个DoSomething方法遵循“模板模式”。它调用虚方法IsTokenChar。第二种DoSomthing方法不依赖于虚函数。相反,它有一个传递委

c# - 在 C# 下,try、throw 和 catch block 对性能的影响有多大

首先声明:我有使用其他语言的经验,但仍在学习C#的精妙之处关于问题...我正在查看一些代码,它以我关心的方式使用try/catchblock。当调用解析例程时,程序员没有返回错误代码,而是使用了以下逻辑catch(TclExceptione){thrownewTclRuntimeError("unexpectedTclException:"+e.Message,e);}这被调用者捕获,抛出相同的错误......被调用者捕获,抛出相同的错误........被调用者捕获,抛出相同的错误......备份大约6个级别。我是否认为所有这些catch/throwblock都导致了性