我有用C編寫的這個應用程序,應該調整它以提高性能。我查看了Linux中的一些性能分析器,發現GNU profiler,valgrind就是其中的一部分。問題是他們都只給出了功能級別的分析信息,而不是我需要的語句級別分析。有沒有可以提供這些信息的工具?Ubuntu Box上的應用程序分析
0
A
回答
1
將代碼編譯爲-g
以獲取調試符號,並使用-O0
優化程序不會擾亂代碼。
然後運行它的GDB調試器下,並且它正在緩慢而,通過按下Ctrl-C中斷它。 它將在另一個線程上停止,因此輸入thread 1
即可進入活動線程。 然後輸入bt
來顯示調用堆棧。 仔細看一下,瞭解它在做什麼,以及它爲什麼這樣做,當你停止它。
做這幾次,你就會擁有它是如何花費的時間非常精確的想法。 這就是random pausing技術,如果你仔細閱讀那裏的評論,你會看到它的工作效果。 另外,FWIW,我做了一個short video of it。
正如你指出的那樣,大多數剖析不給你行級信息。一個我知道,給你一個)線路電平信息,B)包容時間(「自我時間」幾乎是無用的),C)上掛鐘時間(這樣你就不會盲目的I/O)的Zoom。 也許別人可以做到,我不確定。
即使探查器給你所有的,它給你珍貴的小語境和上下文是你必須能夠認識到當被花費的時間實際上是你可以擺脫什麼。 隨機暫停爲您提供完整的上下文。 它從事承認正在發生的事情你的大腦,而最重要的爲什麼,而這只是給你數字或圖形總結,並希望就足以找到的加速。
當你擠出每個循環時,你仍然可以看到一小部分樣本終止於編譯器編譯的代碼中,然後打開-O3
並讓優化器完成它的工作。
0
相關問題
- 1. 在Ubuntu 10.04上使用Nginx發送Rails應用程序Lucid box
- 2. 在MacOSX上分析g ++應用程序?
- 3. 我可以在Ubuntu上使用Virtual Box開發.NET應用程序嗎?
- 4. 分析jQuery應用程序
- 5. 分析Django應用程序
- 6. Bada應用程序分析
- 7. 應用程序分析
- 8. 分析JNI應用程序
- 9. 分析COM應用程序?
- 10. WinForms應用程序分析
- 11. 在CentOS5 Box上運行Ubuntu 12.04編譯的C++程序
- 12. Ubuntu上的QT應用程序14.04
- 13. 應用程序構建。 (Ubuntu上的Swift)
- 14. 如何在Linux上分析多線程C++應用程序?
- 15. 分析使用TopShelf的應用程序
- 16. 在Ubuntu上Failling Qt應用程序
- 17. github在ubuntu上尋找應用程序?
- 18. 遠程分析ASP.net應用程序?
- 19. 分析多線程Java應用程序
- 20. 遠程分析Java應用程序
- 21. ASP.Net Web應用程序的分析器?
- 22. 分析應用程序的Tomcat配置
- 23. Android應用程序的靜態分析
- 24. java應用程序的性能分析
- 25. 分析COM1活動的應用程序
- 26. 分析Web應用程序的速度
- 27. Android應用程序的性能分析。
- 28. Rails應用程序的基本分析
- 29. Ubuntu 12.04在Virtual Box上的USB藍牙
- 30. 使用ltrace分析Android應用程序
由於某些原因,它不能在我的ubuntu內核3.13.0-24-generic上工作。它失敗了很多警告「stalled-cycles-front-event event不被內核支持」 –
@dreamer是兩個分析工具的問題,或者你是在說特定的一個分析工具? – user2760375
我認爲profiler已經完成了任務,如果你知道哪個函數是性能密集型的,那麼如果函數定義很簡單,你應該能夠計算出哪些語句需要花費時間,如果不是,那麼你可以使用記錄器來查找所需的語句。 –