Articles of 性能

在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。 我希望你能帮助,让我知道是否有办法提供更多信息。 🙂

提高阅读事件日志的性能

我正在查询不同的域控制器的事件日志,我必须经过一段时间后继续查询。 以下是我用来查询它的代码。 public static void FindAllLog(string machineName) { //EventLog log = new EventLog("", ""); //log. EventLog[] remoteEventLogs; // Gets logs on the local computer, gives remote computer name to get the logs on the remote computer. remoteEventLogs = EventLog.GetEventLogs(machineName); Console.WriteLine("Number of logs on computer: " + remoteEventLogs.Length); for (int i = 0; i < remoteEventLogs.Length; […]

如何测量Windows上的内存带宽利用率?

我有一个高度线程化的程序,但我相信它不能在多个内核之间很好地扩展,因为它已经饱和了所有的内存带宽。 有没有任何工具可以测量多less内存带宽被使用? 编辑 :请注意,典型的分析器显示内存泄漏和内存分配的东西,我不感兴趣,我只是内存带宽是否饱和。

为什么Windows上的FFTW比Linux上快?

我在Linux和Windows上使用fftw3.a库( fftw3.a , fftw3.lib )编写了两个相同的程序,并计算fftwf_execute(m_wfpFFTplan)语句(16-fft)的持续时间。 对于10000次运行: 在Linux上:平均时间是0.9 在Windows上:平均时间是0.12 我很困惑为什么在Windows上比在Linux上快九倍。 处理器:Intel(R)Core(TM)i7 CPU 870 @ 2.93GHz 每台操作系统(Windows XP 32位和Linux OpenSUSE 11.4 32位)都安装在同一台机器上。 我从网上下载了fftw.lib(用于Windows),不知道这些configuration。 一旦我用这个configuration构buildFFTW: /configure –enable-float –enable-threads –with-combined-threads –disable-fortran –with-slow-timer –enable-sse –enable-sse2 –enable-avx 在Linux中,它会导致比默认configuration(0.4毫秒)快四倍的lib。

最快的方式来逐行读取string的文本文件

可能重复: 什么是C ++高性能顺序文件I / O最快的方法? 我已经环顾一下了,我仍然不确定这个问题的答案。 当从每行的任意词语的文本文件中读取时,从文件中读取单词的绝对最快的方式是什么? 项目的范围需要尽可能快的文件读取。 在Windows 7上使用Visual Studio。没有跨平台的考虑。 编辑:请记住,这个文件读取是一次性的,它不会被再次读取,也不会被写入。 程序启动时,从文件中读取,将其推入数据结构,loadFile()函数再也不会被调用。

以编程方式获取Windows上的每个进程磁盘io统计信息?

我想显示进程列表(Windows,C ++)以及它们以KB /秒为单位从磁盘读取和写入的数量。 Windows 7的资源监视器有能力,所以我应该能够做到这一点。 但是我无法find相关的API调用或在perfmon计数器中find任何东西。 任何人都可以指出我的方向?

我怎么知道我的进程是CPU限制,I / O限制,内存限制还是

我试图加快编译我的应用程序的时间,而我正在研究的一件事是检查哪些资源(如果有的话)可以添加到构build机器中以加快速度。 为此,我该如何确定是否应该投入更多的CPU,更多的内存,更好的硬盘或者是否有其他资源绑定进程? 我已经看到了这个( 如何检查应用程序是cpu绑定还是内存绑定? ),我正在寻找更多的技巧和指针。 我到目前为止所尝试的是: 在构build机器上对我的本地计算机上的进程计时。 我发现构build机器的时间是我的机器的两倍。 运行“资源监视器”,在进程运行时查看CPU使用情况,内存使用情况和磁盘使用情况 – 在这样做的时候,我很难解释这些数字,主要是因为我不明白每列的含义以及如何转化为一台虚拟机与一台物理机箱,以及它对多CPU机箱的意义。

快速的方法来复制(移动)batch file中的文件

我在一个目录中有大量的文件需要validation。 问题是,文件浏览器花费太多的时间来加载文件列表,我的整个计算机变得缓慢。 所以我写了下面的代码,通过移动一定数量的文件(显示为%limit% ,并将700)到编号文件夹(显示为%DirN% )来对文件进行%DirN% for /f "tokens=1-2 delims=:" %%a in ('dir /b /ad ^|findstr /n /v ".bat .cmd .txt"') do if %%a lss %limit% robocopy "%cd%" "%cd%\%DirN%" "%%b" /mov >nul 这个代码本身就像devise一样工作得很好,但是另外一个问题是速度。 由于我正在处理占用20 GB磁盘的文件,因此代码似乎需要永远以这种方式移动文件。 有没有更快的方法来复制(移动)文件? PS。 我试过/move和/xcopy命令,但没有看到太多的差异。 既然有一个上下文的请求,我附上完整的代码: @echo off pushd %~dp0 set DirN=-1 :Check_DirN set LeftOver= for /f "tokens=*" %%a in ('dir /b /ad […]