jjzjj

benchmarking

全部标签

c++ - C++中void函数的重复计时

我正在尝试为void函数计时for(size_tround=0;round第一个计时产生300秒,而接下来的四个计时产生0.000002秒。这表明对assign_clusters的void函数调用已被优化。我怎样才能强制我的程序每次都执行这个耗时的函数调用,同时仍然对其余代码进行优化?我通常做的是保存相关函数的结果然后打印它,但由于这是一个void函数,我是否有相同的选项?我使用以下优化标志:-std=c++0x-march=native-O2 最佳答案 这取决于需要花时间进行修复。这可能是由于:-加载服务。您的集群可能是基于数据库

c++ - C++ 中类似 QuickCheck 的模板函数基准测试

受到Haskell自动生成(随机)给定类型实例的优雅方式的启发,例如在QuickCheck中,我正在尝试弄清楚如何编写一个as-easy-to-use-as-可能的C++基准测试框架。我想我将使用函数模板,可能会借助C++11中的新功能,例如可变参数模板。我希望我只需要指定一个函数或更好的函数模板和一个与函数的参数兼容的STL模板容器类型(反过来它的value_type)。我认为,使用一组不同大小的输入对函数进行基准测试有点类似于C++11中线程的设置和生成方式。我的第一个尝试是复制thread类的构造函数并将其转换为benchmark函数作为templateinlinevoidben

用于快速求解线性系统的 C++ Eigen

所以我想测试C++与Matlab求解线性方程组的速度。为此,我创建了一个随机系统并测量了在VisualStudio上使用Eigen解决它所需的时间:#include#include#includeusingnamespaceEigen;usingnamespacestd;intmain(){chrono::steady_clocksc;//createanobjectof`steady_clock`classintn;n=5000;MatrixXfm=MatrixXf::Random(n,n);VectorXfb=VectorXf::Random(n);autostart=sc.now

c++ - 分析性能测量中的峰值

我有一组C++函数,可以执行一些与图像处理相关的操作。通常我看到最终输出在5-6毫秒的时间范围内交付。我正在测量使用QueryPerformanceCounterWin32API所花费的时间。但是当以100张图像的连续循环运行时,我发现某些图像的性能峰值高达20毫秒。我的问题是我如何着手分析这些问题。基本上,我想确定尖峰是由于此代码中的某些延迟引起的,还是由于此操作花费了时间而导致某些其他任务开始在CPU内运行。我曾尝试使用GetThreadTimesAPI来查看我的线程在CPU内花费了多少时间,但无法根据这些数字得出结论。对这些类型的问题进行故障排除的标准方法是什么?

c++ - 令人惊讶的基准测试结果

看完泰特斯·温特斯的"LiveatHead"谈话,他提到StrCat()是人们最喜欢的功能之一,我决定尝试实现类似的东西,看看我是否可以击败std::string::append(或operator+,我认为它在内部使用append)运行时性能。我的理由是,作为可变参数模板实现的strcat()函数将能够确定其所有类似字符串的参数的组合大小,并进行一次分配以存储最终结果,而不必在以下情况下不断重新分配operator+,它不知道调用它的总体上下文。但是,当我在quick-bench上将我的自定义实现与operator+进行比较时,我发现我的strcat()实现比使用-std=c++17

c++ - 对一段独立于 CPU 性能的代码进行基准测试?

我的目标是:我想测试一段代码(或函数)的性能,就像我在单元测试中测试该函数的正确性一样,比如说这个对标过程是一个“便携”的“功能性能指标”我的问题是:我们通常通过使用计时器来计算代码执行期间耗时来对代码进行基准测试。并且该方法取决于硬件或操作系统或其他因素。我的问题是:是否有一种方法可以获得独立于主机性能(CPU/OS/等)的“功能性能指标”,或者如果不是“独立的””可以说它是“相对于”某个固定值的。因此“功能性能指标”的值在某种程度上在任何平台或硬件性能上仍然有效。例如:FPI值可以用执行一次调用所需的算术指令数与基准函数相比的浮点值,例如函数B的评级指数为1.345(性能比基准函数

c++ - VS2005、VS2008下C++生成的EXE速度; VS2010编译器

当我从VS6升级到VS2005时,我发现在默认编译设置下我的国际象棋引擎程序的速度提高了10%。想知道一般情况下是否也是如此,以及从那时起对MSC++编译器的最终输出进行了哪些改进(如果有的话)。 最佳答案 关于从2010之前的VC++版本迁移到VC++2010+:如果您大量使用STL容器和算法,升级到VC++2010+可能会提供显着超过10%的改进,因为VC++2010+实现了C++11的移动语义。我记得关于Boost的一个特定帖子声称从VC++2008迁移到VC++2010后,他们的应用程序性能提高了900%的邮件列表:[boo

c++ - 刷新缓存以防止基准测试波动

我正在运行某人的C++代码来对数据集进行基准测试。我遇到的问题是,我经常得到第一次运行的时间,如果我再次运行相同的代码,这些数字会发生巨大变化(即28秒到10秒)。我假设这是由于CPU的自动缓存而发生的。有没有办法刷新缓存,或者以某种方式防止这些波动? 最佳答案 不是一个“适用于所有地方”的工具。大多数处理器都有刷新缓存的特殊指令,但它们通常是特权指令,因此必须从操作系统内核内部完成,而不是用户模式代码。当然,对于每个处理器架构,指令都是完全不同的。所有当前的x86处理器都有一条clflush指令,可以刷新一个缓存行,但要做到这一点

java - 是否有 Java 与 C++ 的真实世界基准?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。关闭9年前。要求提供代码的问题必须表现出对所解决问题的最低限度的理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:StackOverflowquestionchecklist要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。Improvethisquestion在我回答这个问题之前,请注意这个问题不是什么:Jav

c++ - 用于随机插入/删除的综合 vector 与链表基准

所以我知道this问题,以及其他处理问题的SO,但其中大部分处理数据结构的复杂性(只是复制到这里,链接这个理论上有O(我理解复杂性似乎表明列表会更好,但我更关心现实世界的表现。注意:这个问题的灵感来自slides45and46ofBjarneStroustrup'spresentationatGoingNative2012他在其中谈到了处理器缓存和引用位置如何真正帮助vector,但对列表根本没有(或不够)帮助。问题:是否有一种使用CPU时间而不是墙时间来测试它的好方法,并获得一种“随机”插入和删除可以事先完成的元素的好方法,所以它确实如此不影响时间?作为奖励,如果能够将其应用于两个任