Questions tagged «microbenchmark»

11
如何用Java编写正确的微基准?
Java 堆栈溢出:Какправильнописатьмикро-тестывJava? 您如何用Java编写(并运行)正确的微基准测试? 我正在寻找一些代码示例和注释,以说明要考虑的各种问题。 示例:基准测试应测量时间/迭代或迭代/时间,为什么? 相关:秒表基准测试是否可以接受?

5
为什么(a * b!= 0)比Java中的(a!= 0 && b!= 0)快?
我正在用Java写一些代码,在某些时候,程序的流程是由两个int变量“ a”和“ b”是否非零(请注意:a和b永远都不为负,以及永远不会在整数溢出范围内)。 我可以用 if (a != 0 && b != 0) { /* Some code */ } 或者 if (a*b != 0) { /* Some code */ } 因为我希望这段代码每次运行可以运行数百万次,所以我想知道哪一个更快。我通过在一个巨大的随机生成的数组上进行比较来进行实验,我也很好奇该数组的稀疏性(数据分数= 0)如何影响结果: long time; final int len = 50000000; int arbitrary = 0; int[][] nums = new int[2][len]; for (double fraction …

6
if语句vs if-else语句,哪个更快?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 改善这个问题 前几天,我和一个朋友争论了这两个片段。哪个更快,为什么? value = 5; if (condition) { value = 6; } 和: if (condition) { value = 6; } else { value = 5; } 如果value是矩阵怎么办? 注意:我知道它value = condition ? 6 : 5;存在,并且我希望它会更快,但这不是一个选择。 编辑(由于问题暂时搁置,因此被工作人员要求): 请通过考虑由主流编译器(例如g ++,clang ++,vc,mingw)以优化和非优化版本生成的x86程序集或MIPS程序集来回答。 当汇编不同时,请解释为什么版本更快以及何时发布(例如“更好,因为没有分支且分支不会出现问题”)

11
如何更简洁地找到缺失值?
下面的代码检查x和y是不同的值(变量x,y,z只能有值a,b或c),并且如果是这样,套z到第三个字符: if x == 'a' and y == 'b' or x == 'b' and y == 'a': z = 'c' elif x == 'b' and y == 'c' or x == 'c' and y == 'b': z = 'a' elif x == 'a' and y == 'c' or x == …

7
在Java中,&可以比&&快吗?
在此代码中: if (value >= x && value <= y) { 在没有特定模式的情况下,何时value >= x和value <= y可能与否一样,使用&运算符会比使用&&? 具体来说,我正在考虑如何&&懒惰地评估右侧表达式(即,仅当LHS为true时),这意味着有条件,而在Java&中,这保证了对两个(布尔)子表达式的严格评估。两种方法的值结果都是相同的。 但是,尽管>=or<=运算符将使用一个简单的比较指令,但&&必须包含一个分支,并且该分支易受分支预测失败的影响-正如这个非常著名的问题:为什么处理排序数组要比未排序数组快? 因此,强制表达式不包含惰性成分肯定会更具确定性,并且不容易受到预测失败的影响。对? 笔记: 如果代码看起来像这样,显然我的问题的答案将是“否” if(value >= x && verySlowFunction())。我专注于“足够简单”的RHS表达式。 无论如何,那里有一个条件分支(该if语句)。我无法向自己证明这是无关紧要的,替代性表述可能是更好的示例,例如boolean b = value >= x && value <= y; 所有这些都属于可怕的微观优化领域。是的,我知道:-) ...不过有趣吗? 更新 只是为了解释我为什么感兴趣:我一直在盯着Martin Thompson在他来关于Aeron的话题之后在他的Mechanical Sympathy博客上一直在写的系统。关键信息之一是我们的硬件中包含了所有这些神奇的内容,而我们的软件开发人员却不幸地无法利用它。不用担心,我不会在所有代码上都使用s / && / \&// :-) ...但是这个站点上有很多关于通过删除分支来改善分支预测的问题,对我来说,条件布尔运算符是测试条件的核心。 当然,@ StephenC提出了一个奇妙的观点,即将代码弯曲为怪异的形状可以使JIT不太容易发现常见的优化-如果不是现在,则不是将来。而且上述非常著名的问题之所以特别,是因为它使预测的复杂性远远超出了实际优化的范围。 我非常清楚,在大多数(或几乎所有)情况下,这&&是最清晰,最简单,最快,最好的方法-尽管我非常感谢发布了答案的人,以证明这一点!我真的很想看看在任何人的经验中,是否确实有任何案例可以回答“可以&更快?”。可能是... …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.