草庐IT

OPTIMIZATION

全部标签

c# - 将 Surface 保存为位图并在 C# 中优化 DirectX 屏幕捕获

经过一整天的测试,我想出了这段代码,它使用DirectX(SlimDX)捕获当前屏幕并将其保存到一个文件中:Deviced;publicDxScreenCapture(){PresentParameterspresent_params=newPresentParameters();present_params.Windowed=true;present_params.SwapEffect=SwapEffect.Discard;d=newDevice(newDirect3D(),0,DeviceType.Hardware,IntPtr.Zero,CreateFlags.SoftwareV

c# - 我可以停止 .NET 4 执行尾调用消除吗?

我们正在将应用程序迁移到.NET4.0(从3.5)。我们遇到的问题之一只能在非常特定的条件下重现:仅在发布版本中仅启用优化和/或将调试信息设置为pdb-only。我的意思是,如果我禁用优化并且将调试信息设置为完整,问题就会消失。有问题的代码在.NET3.5上运行良好,在Release模式下启用了优化等,并且已经完成了很长时间。我真的不想暗示C#编译器中存在错误,所以我的问题是是否有任何技术可以用来追踪我们可能做错了什么导致不正确的优化?我正在尝试将这个问题缩小到一个小测试用例,以便我可以在此处发布一些代码。编辑:我已经追踪到以下问题:我们在表单的构造函数中有这段代码:publicCon

c# - 事件处理程序性能

我遇到了性能问题。我创建了100个新按钮,我想分配一个Click事件处理程序。我执行这段代码大约100次:Buttons[i].Button.Click+=newSystem.EventHandler(Button_Click);大约需要2秒才能完成。我在同一个函数中有很多其他的事件分配,但它们都只需要几毫秒的时间来执行。所以我在中转换了我的代码Buttons[i].Button.MouseUp+=newSystem.Windows.Forms.MouseEventHandler(Button_Click);现在代码很快了(几毫秒,和其他代码一样)。显然我已经修改了函数“Button_

c# - 为什么在通用序列创建器上使用 Func<> 比使用 new() 约束快得多

考虑以下代码...在我对Windows7x64PC(Inteli73GHz)上的RELEASE(不是调试!)x86构建的测试中,我获得了以下结果:CreateSequence()withnew()took00:00:00.9158071CreateSequence()withcreator()took00:00:00.1383482CreateSequence()withnew()took00:00:00.9198317CreateSequence()withcreator()took00:00:00.1372920CreateSequence()withnew()took00:00:

c# - 优化 C# 文件 IO

场景-150MB的文本文件,它是旧电子邮件帐户的导出收件箱。需要解析并提取来自特定用户的电子邮件,并将这些电子邮件写入一个新的单个文件。我有可用的代码,它只是太慢了。我正在使用标记字符串来搜索从原始文件开始/结束副本的位置。这是主要功能:StreamReadersr=newStreamReader("c:\\Thunderbird_Inbox.txt");stringworking=string.Empty;stringmystring=string.Empty;while(!sr.EndOfStream){while((mystring=sr.ReadLine())!=null){i

c# - 强制 .NET JIT 编译器在应用程序启动期间生成最优化的代码

我正在用C#编写一个DSP应用程序(基本上是一个多轨编辑器)。我已经在不同的机器上对它进行了很长一段时间的分析,我注意到了一些“奇怪”的事情。在我的家用机器上,播放循环的第一次运行占用了大约50%-60%的可用时间(我假设这是由于JIT完成它的工作),然后对于后续循环,它下降到稳定的5%消耗。问题是,如果我在较慢的计算机上运行该应用程序,第一次运行会占用比可用时间更多的时间,导致播放中断并弄乱输出音频,这是NotAcceptable。之后,它会下降到8%-10%的消耗。即使在第一次运行后,应用程序仍然不时调用一些耗时的例程(大约每2秒一次),这导致稳定的5%消耗经历了20%-25%的非

c# - C# 中的快速数组移位实现?

我需要将数组向右和向左移动N个位置。从我移动到的一侧弹出的项目必须在另一侧返回。右移13:[0,1,2,3,4,5,6,7,8,9]->[7,8,9,0,1,2,3,4,5,6]左移15:[0,1,2,3,4,5,6,7,8,9]->[5,6,7,8,9,0,1,2,3,4]此操作将发生数百万次并且必须非常快。我当前的实现如下。请查看并建议是否需要进行一些优化。if(shift>0){intoffset=array.Length%shift;if(offset>0){byte[]temp=newbyte[offset];if(!right){Array.Copy(array,temp,

c# - 使用 Microsoft Web Optimization Framework 时不要丑化某些文件

我正在尝试使用MicrosoftWebOptimizationframework将大量.js文件合并为一个文件.一切正常,但在这些文件中,我有几个已经缩小和丑化了,不需要再次处理它们。例如,我有recaptcha_ajax.js文件,它在附加时会导致以下错误:/*Minificationfailed.Returningunminifiedcontents.(715,29-36):run-timeerrorJS1019:Can'thave'break'outsideofloop:breakt(714,293-300):run-timeerrorJS1019:Can'thave'break

c# - 删除大量记录需要很长时间

我有一个包含约60,000行的数据库表(在SQLServer2012Express上运行)。我正在使用以下代码清除旧行://DeletingCPUmeasurementsolderthan(oldestAllowedTime)varallCpuMeasurementsQuery=fromcurrinmsdc.CpuMeasurementswherecurr.Timestamp当删除的行数很大时(删除表中约90%或更多的记录),操作会花费特别长的时间。在性能比较强的机器(IntelI5台式机)上完成这个操作大约需要30分钟。这看起来像是正常行为吗?关于我可以做些什么来减少手术时间有什么想

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

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