<small id='6arB1'></small><noframes id='6arB1'>

  1. <i id='6arB1'><tr id='6arB1'><dt id='6arB1'><q id='6arB1'><span id='6arB1'><b id='6arB1'><form id='6arB1'><ins id='6arB1'></ins><ul id='6arB1'></ul><sub id='6arB1'></sub></form><legend id='6arB1'></legend><bdo id='6arB1'><pre id='6arB1'><center id='6arB1'></center></pre></bdo></b><th id='6arB1'></th></span></q></dt></tr></i><div id='6arB1'><tfoot id='6arB1'></tfoot><dl id='6arB1'><fieldset id='6arB1'></fieldset></dl></div>
  2. <legend id='6arB1'><style id='6arB1'><dir id='6arB1'><q id='6arB1'></q></dir></style></legend>
  3. <tfoot id='6arB1'></tfoot>
      <bdo id='6arB1'></bdo><ul id='6arB1'></ul>

    1. 为已知的更常见路径优化分支

      时间:2023-09-16

          <bdo id='TQfXD'></bdo><ul id='TQfXD'></ul>
          <tfoot id='TQfXD'></tfoot>
        • <small id='TQfXD'></small><noframes id='TQfXD'>

            <tbody id='TQfXD'></tbody>

            <legend id='TQfXD'><style id='TQfXD'><dir id='TQfXD'><q id='TQfXD'></q></dir></style></legend>
            <i id='TQfXD'><tr id='TQfXD'><dt id='TQfXD'><q id='TQfXD'><span id='TQfXD'><b id='TQfXD'><form id='TQfXD'><ins id='TQfXD'></ins><ul id='TQfXD'></ul><sub id='TQfXD'></sub></form><legend id='TQfXD'></legend><bdo id='TQfXD'><pre id='TQfXD'><center id='TQfXD'></center></pre></bdo></b><th id='TQfXD'></th></span></q></dt></tr></i><div id='TQfXD'><tfoot id='TQfXD'></tfoot><dl id='TQfXD'><fieldset id='TQfXD'></fieldset></dl></div>
              • 本文介绍了为已知的更常见路径优化分支的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                请考虑以下代码:

                void error_handling();
                bool method_impl();
                
                bool method()
                {
                    const bool res = method_impl();
                    if (res == false) {
                        error_handling();
                        return false;
                    }
                    return true;
                }
                

                我知道 method_impl() 会返回 true 99.999%(是的,三位小数),但我的编译器不会.method() 在时间消耗方面是部分关键的.

                I know method_impl() will return true 99.999% (yes, three decimal places) of the time, but my compiler doesn't. method() is partially critical in term of time-consumption.

                1. 我是否应该重写method()(并降低可读性)以确保仅在method_impl() 返回false 时才可能发生跳转?如果是,如何?
                2. 我应该让编译器为我做这些工作吗?
                3. 我应该让 CPU 的分支预测为我做这些工作吗?
                1. Should I rewrite method() (and make it less readable) to ensure a jump may only occur when method_impl() returns false? If yes, how?
                2. Should I let the compiler do the work for me?
                3. Should I let the branch prediction of my CPU do the work for me?

                推荐答案

                底层硬件已经执行了这种优化.第一次预测它会失败",但在它会命中正确的选项 en.wikipedia.org/wiki/Branch_predictor 之后.

                The underlying hardware already performs this optimizations. It will "fail" to predict it the first times, but after it will hit the correct option en.wikipedia.org/wiki/Branch_predictor.

                您可以尝试应用 GCC 扩展并检查使用它是否更快,但我认为您几乎看不出有和没有它的任何区别.总是应用分支预测,它不是你启用的东西

                You can try applying the GCC extension and check if it is faster with it or not, but I think you will barely see any difference with it and without it. The branch prediction is applied always, it is not something you enable

                这篇关于为已知的更常见路径优化分支的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:计算 2 模数的大幂的最快方法是什么 下一篇:是否可以保证在 C++ 中不会优化执行内存写入的代

                相关文章

                最新文章

                1. <small id='BW8SD'></small><noframes id='BW8SD'>

                    <legend id='BW8SD'><style id='BW8SD'><dir id='BW8SD'><q id='BW8SD'></q></dir></style></legend>
                    <tfoot id='BW8SD'></tfoot>
                  1. <i id='BW8SD'><tr id='BW8SD'><dt id='BW8SD'><q id='BW8SD'><span id='BW8SD'><b id='BW8SD'><form id='BW8SD'><ins id='BW8SD'></ins><ul id='BW8SD'></ul><sub id='BW8SD'></sub></form><legend id='BW8SD'></legend><bdo id='BW8SD'><pre id='BW8SD'><center id='BW8SD'></center></pre></bdo></b><th id='BW8SD'></th></span></q></dt></tr></i><div id='BW8SD'><tfoot id='BW8SD'></tfoot><dl id='BW8SD'><fieldset id='BW8SD'></fieldset></dl></div>

                    • <bdo id='BW8SD'></bdo><ul id='BW8SD'></ul>