我們的同事之一Peter Mortensen,詢問a question關於超級 用戶關於可能消耗任意百分比CPU時間的應用程序。它激起了我的興趣。控制程序中的計算速度
我的問題是怎麼會這樣的應用進行:
下面是一些我的總體思路,爲什麼我認爲他們是壞:
- 計算程序可以做出將使用算法這將是有意無效的。該選項的問題在於應用程序基本上有一個裝備。爲了解決這個問題,我們需要幾種各種效率低下的算法來提供更多的齒輪。不過,用戶將無法選擇50%的利用率。他必須選擇其中一種算法,並查看它在計算機上的表現。
- 該應用程序可以使用工作線程進行設置,該線程將不時進入休眠狀態。這樣用戶可以控制線程在每次執行和控制CPU利用率之間休眠的時間。但是,儘管平均利用率是可控的,但線程一方面可能會睡眠或消耗資源,所以它不是很好的解決方案。
- 這將是頭號的變體。應用程序可能會以在Java中使用緩存未命中或推測性編譯的方式進行。例如,可以製作一個循環來控制計算,並使其在用戶設置的時間間隔內使緩存未命中。這會減慢計算速度,但實施起來會很困難。或者可以使用Java JIT優化。帶有條件的循環將以JIT優化消除條件的方式執行。一旦條件成立,JIT將不得不優化代碼並執行它。但是如果它存儲了優化版本和未優化版本的代碼,它將只能運行一次。此外,類似的東西需要Java優化的豐富知識才能使其工作。
有關如何使程序故意慢的任何其他想法?
我主要是想在C,C++,C#或Java中實現這樣的東西,但是我擔心C#或Java對於這類問題可能過高。
這是一個很有趣的問題。我忍不住想:「Geez,我應該成爲這方面的專家......」太糟糕了,我的慢代碼不是故意勞動的成果。我多希望我能幫忙。8) – duffymo 2010-07-24 15:22:24
@duffymo是的,這就是我問的原因。我見過的所有CPU燃燒器都盡最大努力提高100%利用率。我記得回到DOS時代,有一種叫做MoSlow的程序或者類似的東西,它讓舊的dos遊戲在新的計算機上運行得足夠慢,但是我對於現代操作系統沒有見過類似的東西。 – AndrejaKo 2010-07-24 15:26:04
相關:http://stackoverflow.com/questions/551494/write-code-to-make-cpu-usage-display-a-sine-wave – jfs 2010-07-24 16:13:39