Friday, May 25, 2007

devenv.exe佔據太多CPU % ?有可能是IntelliSense搞的鬼

最近遇到一個問題,用VS2005開啟某些solution,devenv.exe就吃掉了50%的CPU usage。 而且並沒有要吐出來的意思 囧rz 使用Google之後才發現IntelliSense有一個Bug。 首先,甚麼是IntelliSense? 這個東西就是在VS寫程式的時候,譬如打一個變數的名字打到一半,就會跳出一個box, 裡面包含幾個已經宣告過的變數,讓你選你想使用的變數是哪一個。 這裡(連結)是IntelliSense在Wiki上面的解釋。 這裡(連結)是MSDN的解釋。 這篇文章(連結)提到IntelliSense一個很有意思的問題。 程式裡有時候會有無限循環的時候, 譬如在釐清父類別關係時,如果兩個class互相繼承,就會產生一個無限循環。 絕大多數的情況,VS2005的compiler並不會被影響,它使用了一些技術來克服這個情況。 (不然就跳出error叫programmer改:P) 但是為了提供使用者short cut而去Scan code的IntelliSense卻會落入無限循環之中。 因為IntelliSense的確會因為某些情況 (也許是連結上面提到的例子,也許是別的)落入無限循環之中, 間接的就造成devenv.exe吃掉很多CPU。

2 comments:

crazylion said...

我的bcb這種功能,常常delay 的非常久,也有可能是一樣的問題嗎@@

Royce Lu said...

說不定喔
也有可能是演算法不好:P
這種東西演算法設計的不好很傷效能囧