Tag: 性能

使用性能等内存缓存数据集并将其与数据库更改联系起来的最佳方法是什么?

有人在.Net中遇到一个开源项目或库,充当数据库和自动或按需请求数据的应用程序之间的缓存层,以便提高性能。 .Net堆栈可以像SqlDependencies和Cache一样使用,但两者都有问题。 经测试的替代品: SqlDependency是基于表的,因此当更新表上的一条记录时,整个表都将失效。 Cache对象运行良好,但缺少对象管理function来管理对象中的更改。 Cache中的DataTable可能是一个解决方案,但我想将缓存作为对象而不是DataRow来处理。 专门从事这项任务的系统的任何消息? 任何可以做到这一点的好ORM?

使用内存映射文件的缺点

我的Web服务每分钟写入数千个事务,我们将它们保存在高清上。 我正在测试保存这些文件的不同方法,我使用标准IO和MemoryMapped文件进行了一些测试。 在我的结果中,使用MemoryMapped文件编写文件(20 k文本文件)比标准IO快4倍,我无法找到任何缺点。 由于我对这项技术没有那么多经验,你认为我可能会遇到任何使用它们的问题,或者你没有看到任何不利之处? 谢谢! 编辑1 ,这里的来源: namespace FileWritingTests.Writers { public class MappedFileWriter : ITestWriter { public void Write(string content, string path,string id) { Byte[] data = System.Text.Encoding.UTF8.GetBytes(content); using (var fileStream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) using (MemoryMappedFile memoryMapped = MemoryMappedFile.CreateFromFile(fileStream, id, data.Count(), MemoryMappedFileAccess.ReadWrite, new MemoryMappedFileSecurity(), HandleInheritability.Inheritable, true)) { var viewStream = memoryMapped.CreateViewStream(); […]

反序列化XML文件而不将其全部加载到内存中

假设您的应用程序使用XmlSerializer序列化对象。 当应用程序的另一部分(例如外部服务或其他组件)处理该xml文件时,会返回一个巨大的xml文件,该文件是一个巨大对象的序列化。 在不填充服务器内存的情况下,反序列化和处理响应的方法是什么? 我通常更喜欢使用XmlSerializer,但是当我必须对抗这些怪物时,我没有防弹解决方案。 我已经阅读了有关XNode.ReadFrom的内容,但我想知道如果使用这种方法,我可以像流式反序列化那样完成。 谢谢,马可

C#指针与C ++指针

我一直在学习编程,我选择C ++和C#编程作为第一语言。 更具体地说,我有一本旧的C书,有人让我借用,我用它来学习C#。 我使用Visual Studio Express并使用C ++和C#编写。 我感兴趣的一个领域是直接内存管理的能力。 我正在努力学习如何使用它来优化我的代码。 但是,我正在努力做到这一点,实际上看到任何真正的性能提升。 例如,以下是C#中的以下代码: unsafe static void Main(string[] args) { int size = 300000; char[] numbers = new char[size]; for (int i = 0; i < size; i++) { numbers[i] = '7'; } DateTime start = DateTime.Now; fixed (char* c = &numbers[0]) { for (int i = 0; […]

多次使用属性时的性能考虑因素

我在使用string.format格式化我的字符串时使用CultureInfo.CurrentCulture 引用此博客 这只是暗示如果你经常使用CurrentCulture,可能值得将它读入私有变量,而不是大量调用CultureInfo.CurrentCulture,否则你将不必要地耗尽时钟周期。 所以这个作者 var culture = CultureInfo.CurrentCulture string.Format(culture,”{0} some format string”,”some args”); string.Format(culture,”{0} some format string”,”some other args”); 比…更好 string.Format(CultureInfo.CurrentCulture,”{0} some format string”,”some args”); string.Format(CultureInfo.CurrentCulture,”{0} some format string”,”some other args”); 根据MSDN, CultureInfo.CurrentCulture是一个属性 多次访问属性时是否存在性能损失? 我还做了一些经验分析,我的测试表明,使用局部变量比直接使用属性更昂贵。 Stopwatch watch = new Stopwatch(); int count = 100000000; watch.Start(); for(int i=0;i<count;i++) { string.Format(CultureInfo.CurrentCulture, "{0} is my name", "ram"); } […]

不必要的花括号会降低性能吗?

在编程之后最近遇到这个问题,我一直在想这个。 以下是两个合法和编译的片段。 具体来说,我的问题是这个..在第二种情况下,括号是否使程序变慢? 为什么允许这样做呢? 第一例: if (statement) { // do something } 第二个案例: { if (statement) { // do something } } 另外如果我有类似下面的代码的话。运行时是否与调用函数X相同而没有任何大括号。 { { { // call function X } } }

如何在Visual Studio 2008“Pro”中执行性能分析

微软制作了一款名为“Visual Studio 2008 Professional”的软件。 我发现似乎没有应用程序性能分析器或类似的东西,使它看起来不那么“专业”。 如果Microsoft不包含探查器,那么Visual Studio 2008的时间分析的第三方选项是什么? 免费是更可取的,因为这是为了学生目的:P

ASM中快速的little-endian到big-endian转换

我在C#中有一个uint类型数组,在检查程序是否在小端机器上运行之后,我想将数据转换为big-endian类型。 因为数据量可以变得非常大但总是均匀,我想考虑将两种uint类型作为ulong类型,以获得更好的性能并在ASM中对其进行编程,所以我搜索的速度非常快(如果可能的话,速度最快) )汇编程序算法转换big-endian的big-endian。

为什么ASP.NET页面在IE上的呈现速度比Chrome或FF快?

为什么ASP.NET页面在Chrome和FF上渲染时间大约是IE渲染时间的3倍? 这个问题只存在于我的本地计算机上,但是当发布到真实服务器时,会发生完全相反的情况(预期,因为FF和Chrome的性能优于IE)。 我尝试使用FF 3.6,Chrome 9和IE 8的Windows 7 x64和Windows XP x86。 我可以在IIS或Web配置中执行任何操作来修复此行为吗? 编辑 :回应回应: 运行PHP + apache或JSP时,我没有这些问题 在VS中进行调试会话或在IIS上进行部署后,我注意到了这种情况 修改hosts文件确实改善了Chrome和FF响应时间,但仍比IE慢!

C# – 排序基元数组并跟踪其指数的最快方法

我需要一个float[]进行排序。 我需要知道旧数组在新数组中的位置。 这就是为什么我不能使用Array.Sort(); 管他呢。 所以我想编写一个为我排序数组的函数,并记住每个值占用的索引: float[] input = new float[] {1.5, 2, 0, 0.4, -1, 96, -56, 8, -45}; // sort float[] output; // {-56, -45, -1, 0, 0.4, 1.5, 2, 8, 96}; int[] indices; // {6, 8, 4, 2, 3, 0, 1, 7, 5}; arrays的大小约为500.我该如何处理? 什么排序算法等 解决之后:总是让我惊讶的是C#有多强大。 我甚至没有能够自己完成这项任务。 因为我已经听说过Array.Sort()非常快,我会接受它。