是否在C中打開一個switch語句(假設它使用一個跳轉表)來清空x86處理器的管道?我想這可能是因爲它需要查找表的結果來知道接下來要執行的指令。它能否將這個結果提前回溯到管道沒有完全排空?C中的switch語句是否爲空的x86管道?
4
A
回答
6
7
跳轉表不一定會清空流水線。在現代處理器上預測間接分支,並且分支預測因子的表現比您預期的要好。顯然,正確預測的間接分支不會導致失速。
根本沒有分支是可取的,但通常是不可能的(或引入如此多的開銷以至於淨損失)。用一系列條件分支替換跳轉表有時是有益的,但前提是替換序列中的分支數量相當小。
相關問題
- 1. switch語句是否遞歸?
- 2. C++中的switch語句
- 3. c switch語句
- 4. switch語句中的switch語句?
- 5. 檢查stdin管道是否爲空C
- 6. 爲什麼switch case語句中的'case'是否爲負數?
- 7. C語言中的switch語句
- 8. C# - 語句在switch語句中
- 9. 是否可以將`if`語句轉換爲`switch`語句?
- 10. Objective-C的switch語句
- 11. C#的switch語句重構
- 12. C#:switch語句的問題?
- 13. C++ INT switch語句
- 14. switch語句的奇怪行爲C++
- 15. Objective-C switch語句的奇怪行爲
- 16. 逆向工程C語言中的switch語句來自x86程序集
- 17. Java問題:是否有可能在另一個switch語句中有switch語句?
- 18. 我是否正確使用switch語句
- 19. switch case語句是否靈活?
- 20. 替換目標c中的switch語句
- 21. C++中的switch語句錯誤
- 22. 在C++中的情況/ switch語句
- 23. Switch語句中的C++數學
- 24. c#中的switch語句遇到問題
- 25. 所有if語句是否可以轉換爲等價的switch語句?
- 26. switch語句中的if語句?
- 27. C++ int switch語句總是進入`default`
- 28. objective c - Break語句不在循環語句或switch語句中
- 29. C++,將if/else改爲switch語句
- 30. C++ Switch語句和符號
有條件的跳轉通常會導致流水線抖動。 –