03.03 為什麼手機卸載一個幾個G的軟件瞬間就完成了,而電腦卻需要很長的時間?

蓉城小霸王


手機卸載看似兩三秒就把很大的遊戲比如王者吃雞遊戲卸載了,看著快是因為手機安裝的軟件是有一個安裝包和安裝包解壓後的一些可執行文件以及一大堆媒體數據,卸載時只要把這些對應的文件在文件系統內的的索引節點進行擦除就可以了,不需要真的對閃存進行大量的擦寫,安裝時才需要對閃存進行大量擦寫,所以手機是安裝慢卸載快。

而電腦Windows下不管是安裝還是卸載都挺慢的,安裝遊戲的話,進度條更是慢的出奇,總是在進行各種文件抽取操作,而且且CPU佔用都不到10%。

卸載時更奇怪有的軟件卸載時用的時間比安裝還要多,一般像p2p加速器捆綁下載下來自動安裝的流氓軟件就是這模樣的,在卸載這種軟件時確實會慢點,但主要的是用軟件自帶的卸載程序時在卸載完成時還會有和各種提示說要不要保留數據,留下寶貴意見什麼的。

要是一直不去處理這個彈框,這個程序就一直處於正在卸載狀態,尤其是用安全管理軟件批量卸載時,總是處於卸載中,除非手動把彈框掉掉才算卸載完成。


聞一知二觀隅反三


蘋果iOS不瞭解,所以這裡只討論安卓和Windows在安裝軟件方面的區別。

Windows的大型軟件通常都不是“綠色”的,需要安裝,而且安裝後的文件還不止一個。往往至少有一個exe文件,還有若干個dll,以及其他的資源文件(圖片、視頻、本地數據庫等)。其中dll叫做動態鏈接庫,可以用來和其他程序進行共享。比方說視頻解碼功能,就可以編寫一個專門的dll。另外Windows還有一個com機制,它的dll共享功能更加強大,但是必須註冊。所謂註冊,就是寫入註冊表,通知操作系統其他軟件如何調用它。

請注意,雖然開發人員不會經常自己寫dll,但是會調用別人寫好的共享dll,所謂的拿來主義。而使用它們,就必須在安裝時也一併裝上,註冊上。

Windows的這種共享機制,使得Windows大型程序往往都有很多很多文件,還有很多很多寫入註冊表和寫入系統目錄的操作。

安卓的安裝就顯得簡單很多。安卓同樣也需要共享庫,這是所有大型程序都必須的。但是安卓在安裝是會把這些庫,還有資源文件全部壓縮打包(zip),變成一個apk文件。如果一個APP有1G,即是指這個apk單個文件有1G。如果是Windows,則可能是指成千上萬個文件加起來1G。因為Windows沒有打包。安卓的這種安裝部署方式的好處就是簡單,壞處就是沒有實現真正的共享,造成空間浪費。這個好處壞處就不再展開討論。反正大家現在明白了,安裝時,安卓是將所有文件打包成一個文件,Windows不打包。

在安裝時,不管是Windows還是安卓,面對大型軟件都是比較慢的,甚至超過1分鐘。比如安卓,會將1個G的單個apk複製到手機存儲上,有的還需要預編譯。不過這不是重點,我們關注的是卸載速度。

重點來了,為什麼卸載時安卓幾乎是“秒卸”,而Windows很慢?

剛說了,安卓安裝時只有一個apk文件,卸載的時候刪除這一個文件就可以了,一秒鐘都用不了。當然有時也需要清理這個apk所產生的垃圾文件,不過按照安卓的慣例,數量都不多。

再看Windows,那文件就多了,一堆dll,一堆資源文件,還要對註冊表進行逐一清理。

我們再看看為什麼刪除一個大型文件很快,哪怕是1個G甚至幾十G都用不了1秒?這在安卓和Windows上都同樣適用,刪除單個文件都快。因為刪除文件的時候並沒有徹底把文件清零,而僅僅是把這個文件的佔用區域做一個標記,標記為“已刪除”。徹底刪除大家在Windows上聽說過,叫“粉碎”,一些第三方軟件(360等)有這個功能。相反,如過刪除的文件很多,則時間還是比較長的,積少成多嘛。因為標記為“已刪除”也需要花一點時間的。而刪除的時間長短主要取決於文件的個數,而不是文件的總大小。比如如果刪除一個文件要1秒鐘,那麼3600個文件就要1小時(例子有點誇張)。安卓總共就一個文件,自然就快了。


犍為真人


前面的朋友回答的很詳細,

但我要補充一些同樣原因和技術背景的不同表現,

和一些系統背後的開發思路分析。

不僅是這樣,你可以還會注意到:

  • 手機安裝一個App比卸載速度更快,無論iOS蘋果還是Android安卓。

  • Windows電腦卸載軟件的速度,比Mac/Linux電腦操作系統卸載軟件的速度慢多了。

這背後的理由是類似的。


01

Linux/Unix/MacOS/iOS/Android的設計理念對安裝/卸載的設計

對於Linux/Unix/MacOS/iOS/Android的所有版本——不管是電腦/手機/Pad/甚至是樹莓派,安裝和卸載程序或應用程序都非常快捷簡單。

因為從這幾個系統的設計上,基本上,就是將程序放在需要的位置,或者將其刪除——最多告訴系統,我把這個東西放在這裡了。

02

Windows系統的設計理念,比較複雜

Windows在這方面是獨一無二的,實際上可以稱其為缺陷,或Windows致命弱點。 Windows使用一種稱為“註冊表”的複雜管理模型,來把DLL動態鏈接庫將程序文件和程序所需的資源捆綁在一起——比如,確定程序可以打開哪些文件等等。

簡而言之…在Windows上安裝程序涉及到進行條目和調整以及新文件和關聯。

卸載實際上需要做更多的工作,因為自安裝以來操作系統已建立了新的關聯,需要逐個處理,並不是只需要刪除文件。

03

但萬事無絕對

從第一個版本開始,Android就被認為內置了快速刪除應用——然後逐步清理存儲。

相反,Windows具有悠久的歷史,安裝/卸載過程根本不是標準的——很多很靈活的實現方法。

甚至可以僅在複製exe文件的情況下在Windows上運行應用程序——對一些簡單的程序應用。


三叉戟看科技


安卓卸載app絕不可能1秒刪除,這是系統給你的“假象”。

安卓卸載APP後,圖標立刻沒有了,也沒有卸載進圖圖,所以給人感覺一秒卸載完,實際上是在後臺卸載,有些大程序依然要好久卸載,比如微信,緩存那麼多,怎麼可能那麼快卸載完?

我試過在閃存是eMMC的手機上點卸載微信後迅速打開文檔管理器,可用空間在慢慢變大,前後有1分鐘左右才停下來,換閃存是UFS的手機後暫時還沒試過,肯定快些,但也不可能秒刪。

為什麼系統給你這個假象?因為安卓基本都是手機在用,如果刪除程序時跟電腦一樣有進度條,那絕對影響用戶體驗!


夏羽時代


“極客談科技”,全新視角、全新思路,伴你遨遊神奇的科技世界。


雖然電腦或手機的硬件性能具有一定的影響,主要還是系統上的差異。

  • 電腦普遍使用Windows系統,通過EXE文件的方式進行安裝軟件,卸載則相反執行;

  • 手機端安卓系統基於Linux系統,Linux系統使用樹形結構,一般使用的是掛載式安裝。

兩種系統之間的差異,才是導致卸載軟件時間上存在差距的主要原因!


Windows系統安裝文件方式

電腦安裝軟件一般是下載應用程序的EXE文件,並且雙擊EXE文件實現安裝。

  • 安裝程序按照已經排列好的結構和目錄解壓實現文件的安裝;

  • 並將文件的信息寫入到系統的註冊表,註冊表是程序能否正常使用重要的一環。

註冊表相當系統的一個數據庫,記錄了系統以及用戶的大量信息;

當Windows系統想要刪除應用程序時,同樣要先刪除註冊表中涉及該程序的所有信息,然後才能刪除文件目錄下的內容,註冊表較為複雜,勢必會影響刪除效率。


Linux系統安裝文件的方式

手機基於Linux系統開發而來,這裡僅僅闡述Linux系統。

  • Linux系統與Windows系統不同,使用樹形結構,並未Windows的目錄式結構;

  • Linux系統安裝文件與Windows系統也不同,通過掛載的方式進行安裝。

將需要應用程序掛載至某個目錄下即可,刪除時僅需要斷開掛載刪除應用程序文件件,效率遠遠高於Windows系統;Linux系統無論是在執行效率或至硬件資源的佔用上均要優於Windows系統;至於安卓系統效率低於蘋果iOS系統,主要是因為安卓系統引進虛擬機機制,完成人機交換之間的交互。


關於電腦與手機之間卸載軟件之間的差異,您怎麼看?

歡迎大家留言討論,喜歡的點點關注。



極客談科技


手機刪除快是直接把圖標刪除了,哪怕某個應用有幾十個G的數據,也顯得是瞬間刪除了。其實是在後臺慢慢刪除所有文件,不顯示刪除過程。

而電腦要經過好幾步確認,並且完整顯示刪除過程,顯得很慢。

快與慢的本質是操作系統交互顯示方式的不同,而不是什麼文件系統、是否綠色安裝等因素。其他答案都是在扯淡。


星星384


其實手機也不是一瞬間就完成的!蘋果手機為例,刺激戰場現在閃存佔用大約2.5G,在桌面按壓之後刪除,之後你迅速打開設置,進入儲存查看,你會發現這2.5G左右的空間大約要等5-8秒才能恢復。可見手機在後臺執行刪除任務。把動畫做成秒刪是為了提升用戶體驗,畢竟好幾秒鐘可以乾點別的。但window並沒有這樣的需求,電腦屏幕大的多,多窗口是基本操作,所以一直真實表現。其實安卓早期也和window一樣,但隨著軟件越來越大,在4.4和5.0時代因為安裝卸載慢飽受詬病,所以後來才改成蘋果一樣!


用戶92805446502


Windows下打開git bash,rm -rf 安裝的文件夾,快是快,不要亂用,否則後果很嚴重,血的教訓。


洋蔥科技


很多朋友回答的很專業,在我看來其實是各系統卸載(包括安裝)的機制。最煩心的是win系統只要不是綠色軟件,那麼軟件會在系統各位置拷貝了很多東西,並且註冊DLL,並且可能在系統進程中注入等等等等亂七八糟的一大坨東西在各位置東躲西藏。

如果需要卸載,那麼先要從中止注入在系統進程中的線程,卸載註冊的DLL,還有刪除和還原註冊表中的項,歷史記錄,臨時文件等等等等,最後才刪除軟件本體和緩存文件(這個還不一定刪)加上一些偷偷摸摸安裝上的東西屏蔽等,加上很多軟件不是刪除文件夾,而是逐個文件刪除,還特意保留了一些文件,加上win系統的文件管理天生不足(比如你打開一個有幾千上個文件的文件夾,會很慢)所以卸載過程變得很慢。

而mac端大部分app都算是綠色軟件,直接刪除應用文件夾就可以了(他的應用就是個文件夾),當然如果深入刪除,需要刪除緩存文件夾。還可能存在一些配置文件,不刪除也對系統沒任何影響,也非常小,就是個文本文件。

而ios端更簡單 因為沙箱的機制限制(mac也有,但是 mac可以允許突破沙箱,ios不允許),卸載過程只用殺死進程後,刪除應用的文件,(它的東西都在這裡)和系統數據庫(類似win的註冊表)中對應的項目(寫入和山粗是系統自動配置,不允許人工配置 和注 冊表不同,開發過程中無法在任意位置中寫入數據)。安卓不太清楚 好像是一樣的。

所以,目前幾個主流系統中,除了win系統,都可以秒刪 這個和安全機制有關,


V那個9


電腦缷載幾個G的軟件和遊戲也是一會的事阿!

如果缷載很久的話,第一是電腦性能不足。第二有些軟件要慢慢卸,慢慢刪,軟件中一些文件驅動之類覆蓋多個分區,特別是C盤,保證電腦不會刪錯什麼東西。還要連根撥起來刪!


分享到:


相關文章: