2016-06-10 40 views
1

是否有可能在某種程度上知道每個指令的「成本」(秒,CPU ticks,對數刻度,任何東西)?或者至少對於的一些指令,跳過類似SLICE的東西。在https://docs.python.org/3/library/dis.html有描述。有源代碼:https://hg.python.org/cpython/file/tip/Python/ceval.c#l1199。我想通過分析源代碼可以估計出每條指令會佔用多少資源,但我懷疑這可以通過像我這樣的小白鼠完成。可能有人已經這樣做了?當然,有很多關於優化的高層次的建議,關於優化,但是可能是這樣的措施將幫助初學者更好地理解字節碼,而不需要挖掘C源代碼?字節碼指令成本

編輯:實際的問題不是關於剖析或調試代碼 - 我知道各種剖析方法 - 問題特別是關於字節碼。我記住了CPU指令,它具有成本度量 - 每條指令週期。

+0

今天的計算機幾乎(完全)是確定性的。因此可以做到這一點。但是,將其他進程,多線程/處理器計算機,專有操作系統以及分頁存儲器納入硬盤或虛擬內存會使其變得非常困難。 –

+1

您能否讓我們更好地瞭解您正在嘗試解決的實際問題?這種簡單的好奇心,還是你有一些腳本運行速度太慢,你試圖找出原因? – Kevin

+0

@凱文,這只是好奇心。 –

回答

1

測量「小」代碼段性能的典型方法是timeit。對於更大的事物,我們通常使用cProfile來代替。

這些技術將通過實際運行來測量代碼,並看到執行需要多長時間,因此它們不會產生完全確定性的答案。如果你正在尋找更理論化的東西,你可能需要看看反彙編和CPython source code,以及它是多快的原因。如果您參考Python/C API docs,您可能會發現源代碼更易於閱讀,因爲許多CPython源代碼最終都會調用這些相同的函數。