有没有人使用秒表基准测试,还是应该总是使用性能工具?有没有适合Java的免费工具?你用什么工具?
为了澄清我的担忧,由于操作系统调度,秒表基准测试会出错.在程序的给定运行中,操作系统可能会在您正在计时的函数中间安排另一个(或多个)进程.在Java中,如果你试图为一个线程化的应用程序计时,事情会更糟糕,因为JVM调度程序会在混合中引入更多的随机性.
基准测试时如何解决操作系统调度问题?
我正在为C中的一些非常短的操作编写一些微基准测试代码.例如,我测量的一件事是根据传递的参数数量调用空函数需要多少个周期.
目前,我在每次操作之前和之后使用RDTSC指令进行计时,以获得CPU的循环计数.但是,我担心在第一个RDTSC之前发出的指令可能会减慢我正在测量的实际指令.我还担心在第二个RDTSC发布之前可能无法完成整个操作.
有没有人知道x86指令强制所有正在进行的指令在发出新指令之前提交?我被告知CPUID可能会这样做,但我一直无法找到任何说明的文档.
我已经开发了一个框架,供我们组织中的几个团队使用.在这个框架之上开发的那些"模块"可以表现得完全不同,但它们都是非常耗费资源的,即使有些模块比其他模块更多.它们都在输入中接收数据,分析和/或转换数据,并进一步发送.
我们计划购买新硬件,我的老板让我根据模块定义和实施基准测试,以便比较我们获得的不同报价.
我的想法是简单地用一组精心选择的数据作为输入顺序开始每个模块.
你有什么建议吗?关于这个简单程序的任何评论?