Articles of 性能

CreateFileMapping,MapViewOfFile,如何避免阻塞系统内存

我正在开发针对桌面系统的应用程序,它可能只有256MB RAM(Windows 2000以上)。 在我的应用程序中,我有这个大文件(> 256MB),其中包含约160字节/每个的固定logging。 这个应用程序有一个相当漫长的过程,随着时间的推移,它将随机访问大约90%的文件(用于阅读和写作)。 任何给定的logging写入不会超过特定logging的读取次数(我可以调整该值)超过1,000条logging。 我有两个明显的select这个过程:常规I / O(FileRead,FileWrite)和内存映射(CreateFileMapping,MapViewOfFile)。 后者应该在有足够内存的系统中效率更高,但是在内存不足的系统中,它会将大部分其他应用程序的内存换掉,这在我的应用程序中是不可能的。 有没有办法阻止进程消耗所有的内存(例如,强迫刷新我不再访问的内存页面)? 如果这是不可能的,那么我必须诉诸于正常的I / O; 我希望在写作部分使用重叠的I / O(因为访问是随机的),但是文档说less于64K的写入总是同步服务 。 任何改进I / O的想法都是受欢迎的。

如何调整TCP以实现高性能的单向传输?

我的(networking)客户端每200毫秒向我的服务器发送50到100 KB的数据包。 有多达300个客户。 服务器什么也不发送给客户 服务器(专用)和客户端在LAN中。 如何调整TCPconfiguration以获得更好的性能? Windows Server 2003或2008上的服务器,Windows 2000及更高版本上的客户端。 例如TCP窗口大小。 改变这个参数有帮助吗? 还要别的吗? 任何特殊的sockets选项? [编辑]:实际上在不同的模式下数据包可以达到5MB

为什么打电话给PerformanceCounter很慢?

我正在从PerformanceCounters读取'%CPU'和'可用内存'的服务器上工作。 它在我的开发机器上运行良好。 但是在实际的服务器上,从这两个PerformanceCounter读取真的很慢。 至less在前两个读取操作。 执行以下代码可能需要4-6分钟时间: Stopwatch watch = new Stopwatch(); Log.Instance.Debug("Going to initialize Diagnostic's PerformanceCounters"); watch.Start(); m_CPUPerformanceCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true); m_MemoryPerformanceCounter = new PerformanceCounter("Memory", "Available MBytes", true); m_CPUPerformanceCounter.NextValue(); m_MemoryPerformanceCounter.NextValue(); //Ensure an updated value… System.Threading.Thread.Sleep(1000); m_CPUPerformanceCounter.NextValue(); m_MemoryPerformanceCounter.NextValue(); watch.Stop(); Log.Instance.Debug("Finished initializing Diagnosticss PerformanceCounters. Time elapsed: {0}", watch.Elapsed); 当我在开发机器上运行这个代码时,它会在不到2秒的时间内完成(有时甚至更less)。 但是在我们产品的客户端应该使用的实际服务器上,这将需要很长时间。 见下文: Finished initializing […]

最高CPU使用率的进程名称

我有一个Samurizeconfiguration,显示与任务pipe理器类似的CPU使用情况图。 如何显示当前最高CPU使用率的进程名称? 我希望最多每秒更新一次。 Samurize可以调用一个命令行工具,并在屏幕上显示它的输出,所以这也可以是一个选项。 进一步澄清: 我已经调查编写我自己的命令行c#.NET应用程序来枚举从System.Diagnostics.Process.GetProcesses()返回的数组,但Process实例类似乎不包括CPU百分比属性。 我能以某种方式计算吗?

Visual Studio 2015慢

嗨,我只是做了一个新的安装Windows 10和安装Visual Studio 2015年终极。 我立即注意到,视觉工作室2015是非常缓慢的,我采取任何行动有1-2秒的延迟。 打开一个JavaScript文件,写一些代码,试图打开源代码pipe理他们都行为相同的方式。我已经安装了Web Essentials和Web编译器的插件,我一直在Visual Studio 2013中经常使用。 我知道我的问题是模糊的,但我似乎无法find问题的根源可能是什么。我在网上查找,找不到任何帮助。 现在有谁能提高它的性能呢?

在Windows中等效的任务集

在Linux中,有一个taskset实用程序,它允许您为某个进程设置CPU关联。 在Windows环境中是否有相同的东西? 我想为我的产品设置一个最大的CPU阈值,在Windows中是否有任何现有机制提供这种function? 如果有任何帮助,我的产品是在.Net中开发的 谢谢

当区域设置时,Windows C Runtime toupper变慢

我正在诊断一个跨平台(Windows和Linux)应用程序的边缘情况,在Windows上toupper是相当慢的。 我假设这对于tolower来说也是一样的。 最初,我用一个简单的C程序testing了每个没有语言环境信息集,甚至包括头文件,性能差别很小。 testing是一个百万迭代循环调用每个字符的toupper()函数的string。 在包含头文件并包含下面的行之后,它会更慢,并调用大量MS C运行时库特定于语言环境的函数。 这很好,但是性能却非常糟糕。 在Linux上,这对性能没有任何影响。 setlocale(LC_ALL, ""); // system default locale 如果我设置下面它运行速度与Linux一样快,但似乎跳过所有的区域设置function。 setlocale(LC_ALL, NULL); // should be interpreted as the same as below? OR setlocale(LC_ALL, "C"); 注意:运行Cent OS的Windows 10 G ++ for Linux的Visual Studio 2015 已经尝试了荷兰的设置设置和相同的结果,在Windows上速度慢在Linux上没有速度差异。 我做错了什么,或者在Windows上的语言环境设置是否有错误,或者它是不是在做什么,它应该? 我还没有对linux应用程序进行debugging,因为我不熟悉Linux,所以不知道它在内部做什么。 接下来我应该testing什么来解决这个问题? testing代码如下(Linux): // C++ is only used for timing. The original program is in […]

在Windows中对程序进行基准testing的最佳方式是什么?

我需要在Windows中的.NET程序(C#)上做一些性能基准testing,但是我没有在Windows环境中做很多基准testing。 我已经考虑使用Windows 2000 / XP性能监视器与自定义计数器,但我不认为这是相当我想要的。 在Windows XP中有没有好的系统设备,或者我需要使用System.Diagnostics.Stopwatch [编辑]和写入文本日志手动解释,还是有其他的东西? 编辑:有什么超越System.Diagnostics.Stopwatch ?

Wine上的可执行文件比Windows运行得更快 – 为什么?

解决scheme:显然罪魁祸首是使用floor() ,其性能原来是依赖于glibc的操作系统。 这是以前的一个后续问题: 在Linux上比Windows更快的相同的程序 – 为什么? 我有一个小的C ++程序,用nuwen gcc 4.6.1编译时,在Wine上的运行速度要快于Windows XP(在同一台计算机上)。 问题是:为什么会发生这种情况? Wine和Windows的时间分别为15.8秒和25.9秒。 请注意,我正在谈论相同的可执行文件 ,不仅仅是相同的C ++程序。 源代码在post的末尾。 编译的可执行文件在这里 (如果你相信我)。 这个特定的程序没有任何用处,它只是从一个更大的程序中解脱出来的一个简单的例子。 请看另外一个问题 ,对原始程序进行一些更精确的基准testing(重要的!!)和排除的最常见的可能性(例如其他程序占用Windows上的CPU,进程启动惩罚,系统调用的不同,如内存分配) 。 另外请注意,虽然在这里我使用rand()为简单起见,在原来我使用我自己的RNG,我知道没有堆分配。 我在这个话题上提出一个新的问题的原因是,现在我可以发布一个实际的简化代码示例来重现这个现象。 代码: #include <cstdlib> #include <cmath> int irand(int top) { return int(std::floor((std::rand() / (RAND_MAX + 1.0)) * top)); } template<typename T> class Vector { T *vec; const int sz; public: Vector(int […]

运行速度较慢的Mac上的Java代码运行速度快于Windows计算机上的运行速度?

我找不到任何答案,所以我想我会问在这里。 我有一台配有Intel(R)Core(TM)i7-4870HQ CPU @ 2.50GHz的MacBook和一台配有i7-4790K 4ghz cpu的Windows电脑。 我写了一些在两台机器上运行6个线程的Java代码,一个长时间运行的任务遍历一个ArrayList,每次都是一样的,除了每次ArrayList稍微短一点,所以时间自然会变短每次运行该方法。 但是,在我的MacBook和Windows电脑上运行它,在运行代码所花费的时间方面有着明显的差异,我的MacBook在每次花费大约12-13分钟时间内花费大约1分钟甚至更多运行该方法(在这一点上)。 这两个计算机都没有运行在100%,并且两台计算机都有很多未使用的RAM。 我希望你能帮助,让我知道是否有办法提供更多信息。 🙂