2014-09-23 51 views
1

當試圖運行密集的Ruby方法時,我注意到它只使用了25%的CPU資源,而70%的CPU空閒。有什麼辦法可以配置這個以使用更多?我在Windows 7上,ruby 2.0.0Ruby.exe只使用25%的CPU資源

+9

你有四核CPU嗎? :) – 2014-09-23 18:00:00

+0

很確定Ruby的默認實現只有綠色線程。這不會使它只能從一個核心工作嗎? – 2014-09-23 18:00:28

+3

@DanPantry:不可以,1.9或更高版本不使用綠色線程。他們使用全局鎖定的真實線程。 – 2014-09-23 18:01:17

回答

4

你可能有4個CPU核心。您正在運行1個Ruby進程。 1 Ruby進程= 1線程=可以使用最大1個CPU內核。 Ruby的MRI(默認)實現當前不能並行運行多個線程。爲此,您可能需要嘗試JRuby或Rubinius等允許並行線程的其他實現。我猜你需要學習一些關於多線程的知識才能理解這一點,首先閱讀一些基本教程,然後閱讀「Does ruby have real multithreading?」等問題。

+1

我會考慮遷移到jruby,謝謝。 – 2014-09-23 18:38:18

+1

這不僅僅是JRuby。 *除了MRI和YARV支持,所有* Ruby實現並行運行多個Ruby線程。甚至MRI和YARV也支持並行運行* C *線程,而不是Ruby線程。但是,請注意,當然,您仍然需要重新構建您的代碼,以便首先使用多個線程。 – 2014-09-23 21:17:47

+1

@JörgWMittag:真的,*所有*他們? :) https://github.com/cogitator/ruby-implementations/wiki/List-of-Ruby-implementations – 2014-09-24 16:11:27

-1

當進程運行時,轉到任務管理器,右鍵單擊程序,單擊「轉到進程」,右鍵單擊進程,選擇優先級,並檢查「高」。

重要提示:從不將應用程序設置爲「實時」,這可能會導致幾個問題。

enter image description here

引用:

http://www.tomshardware.com/forum/57576-63-maximum-capacity-application

+1

這不會超過25%,我認爲其他答案是正確的,因爲默認情況下它不會使用多個核心。 – 2014-09-23 18:36:12