為什麼win10運行編寫的程序比win7慢很多?

我換了一台電腦,同時系統也從win7變成了win10。新電腦的CPU要比舊電腦好很多(i52450m-i56300hq),但是用C編寫完模擬程序並且運行時要比win7慢的多(約3到4倍)。後來裝了一台win7的虛擬機,試驗了一下,在虛擬機里跑程序的時候速度就和以前一樣快了,所以可以肯定是操作系統的問題。

我用VS2013和DevC都試了一下,是相同的效果。將win10中生成的exe文件放進虛擬機的win7中,速度也要比win10快得多。

請問有什麼可以解決的辦法嗎?因為捨不得正版的win10,所以不太想換回win7。


你程序有細節么。

不過有時候很多東西在高版本系統就是慢,比如本地cmd裡面的顯示速度,同一機器vista以上任何版本都沒有xp快。因為nt6以上console從子系統層移動到了用戶層

以前在cmd裡面做過字元視頻播放器的應該有體驗。

win10的cmd可以顯示帶cleartype的任何字體了,變慢也不奇怪

你用QueryPerformanceCounter或者內聯彙編rdtsc,比較一下你程序所有寫console的操作在XP、Win7和Win10下的執行時間,應該可以確認或排除我說的這個因素。


遇到這種性能問題第一件事情就是去 profile,而不是瞎問

比如解壓巨大壓縮包(含有大量小文件)的時候,瓶頸居然是列目錄


看到大家的回答還沒有提到,我就來答一答吧。本科在讀小碼農一枚,之前讀吳軍博士的《浪潮之巔》裡面提摩爾定律的時候有提到一個定律安迪比爾定律,安迪是英特爾CEO,比爾就是微軟咯。有一個細節是隨著硬體的各種升級,然後軟體越來越不好用了。這個感覺是很正常的,你本身的感覺並沒有錯,在以前硬體受到限制的時候,碼農都是儘可能多的利用現有的硬體寫出比較好程序,儘可能棒的code。隨著硬體按摩爾定律的增長,姑且不談目前摩爾定律到底適不適用的問題,硬體越來越好了,碼農(說錯了不能讓我們碼農背鍋,明明這個是Boss的鍋)就會想反正硬體這麼多,我做那麼精細,花更多成本投入更多精力幹嘛,用完現在的硬體,能夠做出一個很好的不就好了嘛!硬體產商也會說,媽蛋我硬體升級了賣了這麼多,要是這些系統開發商用不完,用戶覺得夠用不買單,我怎麼繼續賣呢?所以這裡就有一個商業刺激的問題了,當然也跟成本有關係。並不是現在的系統就比以前弱,可以理解著以前的代碼實現那都是精品中的精品。現在嘛,我在現有資源的情況下做出一個perfect的就可以啦!所以啊win10和win7就是這麼個情況,並且複雜度代碼數量級疊加已經不在一個數量級了,code越多,bug越多,至於其它么就呵呵就好。。。也沒法比較。商業化嘛,反正用戶又不管那麼多,另外說這麼多,想更快你買單么?開發成本擺在那裡的,話說大家系統付個費在我大天朝都行不通。。。真以為這個世界免費午餐那麼多,天上到處都是餡餅往下掉吶。。。逃。。。


需要知道具體的模擬程序運行涉及的API和內核的調用,win10比之前的win7是在一些架構和內核的設計上是有變化的,但是並不是不能通過替代的方案解決你的問題(性能)

如果只是console下的字元顯示和標準庫的操作,這個就是上面一個答主所說的,cmd下微軟有一些顯示上的變化,添加很多交互上和顯示上的變化,也許這些是你感覺變慢的原因。

Console Improvements in the Windows 10 Technical Preview,這篇博客說了一些console的變化,另外如果想要驗證是不是這個導致變慢,有一個簡單直接的方法,就是在cmd的屬性中,有一個「使用舊版控制台」的選項,你選中重啟控制台,看看是不是變快了。


運行程序的時候把輸出重定向到文件,然後測量一下運行速度。如果速度大幅提高那就是CMD.exe的問題,你可以考慮選擇一個替代品,比如ConEMU


我也是,win10各種問題,兩台電腦,原來的win7,上面的好幾個編程軟體都能運行,又把安裝包放在win10上,安裝以後,一個都不能運行

不知道是不是因為安裝了盜版的win10


win10 企業版+vs2013 C++用log4cplus寫日誌, 開啟控制台輸出後 win10下比win7下慢數十倍


我也覺得,差別很大。感覺與Cpu調度有關係,還不能很好的利用多核。


和硬體商說好的,忽悠你升級呢。


這個需要調查研究才會知道是怎麼回事。如果樓主能夠拿出一個規模很小又能復現此問題的程序,我想這裡會有人願意看看的。

一般來說,應該相信微軟的程序員的水平,Win10不可能很差的。


謝邀!

由於Windows是一個閉源操作系統,所以只有能夠查看它每次的release note才能夠知道每個版本的變化,而內核和API的變化有時候也是非常隱蔽的。

個人覺得是新版本的Windows10在API是實現方法上有一定的變化,也有可能是內核的變化引起的。由於看不到題主所說程序調用的api,所以不能夠詳細分析。


推薦閱讀:

用一個bug很多的操作系統是怎樣的體驗?
Windows 10 中的包含 Linux 子系統是否違反了 GPL?
Windows Phone 應用會在 2015 年下半年迎來爆發么?
Windows 10 下有什麼能夠方便輸入直角引號的中文輸入法?
為什麼win10電腦藍屏後依然可以顯示中文?

TAG:操作系統 | Windows7 | C編程語言 | 操作系統內核 | Windows10 |