作者chrisjon (與程式最後的決戰)
看板PLT
標題Re: [問題] 同環境不同時空所需時間....
時間Mon Sep 28 17:02:14 2009
※ 引述《chrisjon (與程式最後的決戰)》之銘言:
: 請問,有可能在 相同電腦、相同程式、相同軟體
: 在不同時間跑出來的結果不同嗎? ~.~??
: 我使用Maple統計軟體,在數個月(約半年)前跑出一些結果
: 此結果是記錄 一個計算公式執行10的9次方次
: 最近因為使用C,找出一些不同的程式碼
: 因為時間結果太奇怪,所以把之前的程式(一模一樣的)再重新跑一次
: 結果時間縮短了將近1/3~1/4....
: 例如:原本跑20937秒,重跑後剩5510秒
: 原本跑12468秒,重跑後剩4983秒
: ....怎麼會這樣~.~
┌─────┐
│ 引入參數 │
└──┬──┘
↓
┌─────┐
│ 記錄時間I│
└──┬──┘
↓
┌─────┐
┌─┤while i<k │←┐(k = 1,000,000,000)
│ └──┬──┘ │
│ ↓ │
│ ┌─────┐ │
│ │ 計算公式 ├─┘
│ └─────┘
└────┐
↓
┌─────┐
│記錄時間II│
└──┬──┘
↓
┌─────┐
│耗時=I-II │
└──┬──┘
↓
┌─────┐
│ 結 束 │
└─────┘
流程只是如此,為什麼時間會變呢?
在我的想法,因為在一樣的條件下,所以得到的結果應該會差不多
(會有誤差,但應該不會差太多)
請問能否請前輩簡單說明一下? 感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.137.179
1F:推 PsMonkey:multi-programming OS 阿.... [攤手] 09/28 21:35
11何謂Multi-Programming系統。
在批次系統中,雖然程式可以一個接一個地執行, 但只要某份工作正在等待 I/O 設備
(例如讀取或儲存資料), CPU 就會為了要等待其執行完成, 而處於閒置狀態。
為了改善此一情況, 於是發展出多元程式 (Multi-programming) 系統。
我在知識+看到的解釋,可是還是不是很懂
為什麼同樣的電腦會出現Multi-programming OS
因為自動更新的關係嗎?
※ 編輯: chrisjon 來自: 123.195.137.179 (09/28 22:04)
2F:→ menspower:你在執行你的程式時...滑鼠卻還可以動來動去? 09/28 22:53
3F:→ menspower:要達到這種效果...不就是Multi-programming? 09/28 22:55
4F:→ menspower:不過我舉的例可能沒有很好...我省略了某些運作細節:P 09/28 22:57
嗯嗯!!多工就是了
但是問題是,第一次跑時,電腦重開機後就執行程式,之中幾乎沒有做過其他事
(偶爾會動動滑鼠)
可是最近這次跑程式,我幾乎是跑程式兼看網頁、打BBS全都來...反而還比較快?
5F:推 menspower:想請問原po所使用的記錄時間所呼叫的function為何? 09/28 23:02
6F:→ menspower:而且這個問題跟Multi-threading及Multi-core有關... 09/28 23:04
7F:→ menspower:不過要先查清楚Maple跟C所使用的紀錄時間function為何.. 09/28 23:06
Maple只要執行 time(); 就會出現執行程式所"累計"的時間
例如A程式執行30秒,time(); → 30
再執行B程式25秒, time(); → 55
所以要計算B程式所耗費的時間,就是先把30記錄下來,再把55記錄下來,最後相減
※ 編輯: chrisjon 來自: 123.195.137.179 (09/29 03:28)