Articles of 性能

是否有可能加快python IO?

考虑这个python程序: import sys lc = 0 for line in open(sys.argv[1]): lc = lc + 1 print lc, sys.argv[1] 在我的6GB文本文件上运行,大约在2分钟内完成。 问题: 可以加快吗? 请注意,同一时间需要通过: wc -l myfile.txt 所以,我怀疑我的问题只是一个普通的“不”。 还要注意,我的真正的程序正在做一些比计算线更有趣的东西,所以请给出一个通用的答案, 而不是行计数技巧(如保持文件中的行数元数据) PS:我标记了“linux”这个问题,因为我只对linux特定的答案感兴趣。 如果你有它们,可以随意给OS-agnostic,甚至是其他OS的答案。 另见后续问题

上下文切换的开销是多less?

本来我认为上下文切换的开销是TLB被刷新。 不过,我刚刚在维基百科上看到: http://en.wikipedia.org/wiki/Translation_lookaside_buffer 2008年,Intel(Nehalem)[18]和AMD(SVM)[19]都将标签作为TLB条目的一部分,并在查找期间检查标签。 尽pipe这些标签没有被充分利用,但是可以预见,将来这些标签将识别每个TLB条目所属的地址空间。 因此,上下文切换不会导致TLB的刷新 – 而只是将当前地址空间的标记更改为新任务的地址空间的标记。 上述情况是否确认新的Intel CPU不会在上下文切换时刷新TLB? 这是否意味着在上下文切换中没有真正的开销? (我想了解上下文切换的性能损失)

IPC的性能:命名pipe道与套接字

每个人似乎都认为命名pipe道比套接字IPC更快。 他们快多less? 我更喜欢使用套接字,因为它们可以进行双向通信,而且非常灵活,但是如果数量相当多的话,它会select速度而不是灵活性。

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 […]