-
1 # 糾結名字不知道怎麼起
-
2 # 果醬實驗室
首先說結論 肯定會
android 的app是執行在一個虛擬機器內,中間就多了一層的呼叫。
另外java沒有直接編譯成二進位制,而是java byte code,需要再經過jit才能執行,這又是一比開銷。
這兩方面看 c必然快一些。
但是app開發如果也用c的話,那麼app的數量和質量看 肯定會差很多,畢竟c並不是一門容易使用的語言。如果一個系統飛快但是沒有app的話 你還會用麼
-
3 # 肥宅A
提升不大
在程式設計師程式碼最佳化好的大前提下,還是會存在各大流氓軟體後臺靜默執行,讀取分析使用者資料,互相喚醒,故意卡頓。。。等問題存在
-
4 # 科技犀利評
安卓app可以把主要功能都用原生代碼native code實現,java只做一些ui等,事實上大的app就是這麼幹的,比如各種影片類應用,所以其實沒有那麼慢
-
5 # silver0916
安卓不是基於java的,安卓應用是基於java的。安卓的核心是linux,本來就是c寫的。理論上來說,c的效率比java高,會更快些。
-
6 # 彼岸的天地
會的。
但是計算量小的應用沒有必要,這就像是10ms和100ms的差距,人也基本感覺不出來,而且JAVA層封裝的方法多,寫起來也比C更快。
計算量大的很多都會用C來實現計算部分的程式碼,然後透過jni呼叫native程式碼。
JAVA和C效率差距大概可以用10倍左右來算。
而且現在的應用載入一個原聲頁面雖然說表層是JAVA寫的,但呼叫的大多數都是底層的native程式碼。
-
7 # 河北省比利
彙編:比速度,在坐的各位都是垃圾。
谷歌選java,是因為其可移植性和開源性,這兩大優點對於安卓的推廣有很大意義。效率低的問題,一種解決辦法是生成本地機器碼,縮短流程;另一種解決辦法是真的動刀,複雜但效果更好,就是有針對性的最佳化jvm,提高機器碼效率。比如針對手機來專門最佳化jvm,忽略對其他裝置的最佳化(因為使用者少,最佳化的總收益就低)
-
8 # 高科技讓人煩惱
一群外行,安卓需要效率的都編譯成二進位制程式碼了,顯示卡渲染也和是c還是Java沒關,剩下的是c是Java基本沒影響,Java能跑五十幀的,換成c通常也去不到五十一幀。
-
9 # saiksy
安卓基於Linux核心開發,而linux是純c語言寫的,有聽說過用java寫驅動的嗎?再對比iOS,有誰認為安卓快過ios的?安卓機動不動就8核8G記憶體,iPhone才多少?java虛擬機器就是記憶體吃貨,慢,一堆人說什麼程式碼質量的,真是搞笑
-
10 # 三袋大菠蘿
很顯然,用C開發執行起來肯定會更快,但程式設計師開發起來會更慢。
java的byte code只能以虛擬機器的方式變為CPU指令。雖然大多JVM在載入程式時就把byte code變為CPU指令,但遇到陣列訪址等一些操作時,C語言還是會有非常明顯的優勢。
-
11 # 匹夫關注
當然會,java做了很多不需要做的事,就比如你初始化一個字串,它連長度都給你計算好了,其實有些時候我根本不關心長度,當然這是最最基本的浪費算力。但是開發起來方便嘛,比較起來還是用java好些。
-
12 # 夶白兎
基於彙編執行效率更高咋不去用啊,腦子進水的真不少,非得從執行效率上爭個好低,程式設計師眼界就那麼窄麼,如果沒有其他高階語言,憑藉c的開發效率和難度,現在軟體行業得倒退十年
-
13 # 村長9828
0、問題有點半外行(或者是口誤,說的是“如果安卓的‘APP’是……”,那算我失禮了)。安卓就是C寫的,安卓的APP的主要開發語言才是java。
2、會快,不過為了匹配各種各樣五花八門的硬體,肯定在執行速度上有所犧牲。
1、蘋果因為軟硬體全都自己來,自己給自己最佳化,快其實是比較理所應當的。(當然也不能忽視N多軟硬體工程師付出的巨大努力)
另,個人以為WIN同樣也是在相容的問題上吃了很大的虧,比如系統容量以及記憶體佔用等。
-
14 # 花花之主
安卓比蘋果需要更多硬體資源主要原因不是程式語言,而是因為蘋果系統應用切到後臺後就不佔記憶體和cpu了,安卓很多應用在後臺跑。另外,安卓介面佈局要兼顧各種規格的螢幕,佈局演算法更復雜,蘋果這方面要簡單很多,所以同等硬體條件下蘋果看起來更順滑一些。再多說一下,Java真正的問題不是慢,而是垃圾收集機制帶來的程序暫停,這個對一些實時性要求高的應用比如遊戲影響大。
-
15 # 財智道
當然會快一點, 但是,好多人不知道,以前的安卓用1年多久卡頓的主要原因, 其實不是JAVa及其虛擬機器模式, 最大的原因是安卓開發者沒有受到較為嚴格的管控, 程式天馬行空,使用記憶體鋪張浪費,從來不考慮這個系統生態裡面還生活著其他的APP, 就好比以前人類對動植物大肆捕獵砍伐侵佔一樣, 很快發現人類自己也受到懲罰了一樣。
這兩年華為從兩個方面,準確的說,應該是三個方面,第一個方面是從檔案系統方面提升了安卓的效能,比如研發了f2fs,erofs 等, 現在他們都已經合入了安卓主線版本,其他友商都可以用了, 第二個方面是華為研發方舟編譯器,你加我程式解析成機器碼,使JAVA程式可以像c程式一樣,直接在機器上執行,這兩個方面是從技術層面對安卓系統的最佳化。第三個方面是華為在建立hms,相當於是在打造類似於iOS那樣的嚴格的是生態環境,讓開發者不要亂來,亂來程式就上不了架。
-
16 # EmacserVimer
Android為什麼不用C語言開發應用?
Android本身是基於Linux核心發展起來的,在技術棧方面Android核心部分是C語言編寫的,中間的框架是C++,連線應用層、應用開發是透過Java來開發的。
為什麼不用C語言來開發Android應用呢?
C語言本身不是面向物件的程式語言,用來做業務開發並不是特別適合,要做圖形介面更是非常不擅長,跟Java和C++這些程式語言比起來,在這方面有很大的差距。
C語言還有個非常大的劣勢是,學習門檻要比Java等程式語言還是要高很多,而且C語言程式設計師數量相對來說比較少,這對於Android初期的發展是不利的。Java程式設計師數量多,Java還是開源免費的程式語言,面向物件、跨平臺,這都是Java的優點,剛好這些優點跟Android的發展非常契合。因此不選擇C語言,也是有特定的原因的。
Android卡頓不光是Java的鍋基於虛擬機器是Java的優點,這讓Java擁有非常好的跨平臺優勢,也確實客觀上讓Android的“負擔”增加了,不過這並不是全部原因。
Android碎片化太嚴重了:硬體亂七八糟、ROM廠商都有自己的規則Android的碎片化主要是兩方面造成的,一個是硬體、一個是軟體。
Android的硬體裝置簡直是太豐富了,這一點跟Windows很類似。Android手機分為非常多的廠商,三星、小米、OPPO、VIVO、華為等等;Android手機的處理器也非常多樣,高通梟龍、聯發科、華為海思麒麟、三星獵戶座等等;螢幕形態也是亂七八糟,額頭、打孔、水滴,還有各種各樣的尺寸、解析度,非常豐富;攝像頭模組也是多種多樣,單攝、雙攝、三攝、四攝。
Android由於開源、以及某些大家眾所周知的原因,導致了在國內每個廠商都有自己的ROM,每個廠商都有一套自己的規則,要加入很多自己的東西,這裡面大多數都是負最佳化。
WebAPP的廣泛使用
純原生開發的好處是效能更出色,可是很難應對網際網路的需求變化。網際網路行業需求變動太多了,經常要進行版本迭代,WebAPP能夠很好的應對需求變動,還能夠實現跨平臺開發,能夠大大的減少研發成本。WebAPP跟原生應用比起來效能和體驗都會差很多,這一點同樣會讓使用者體驗變差。
國內應用開發商都非常不規矩:許可權濫用、功能冗雜
Google對於Android的許可權管理本來就比較開放,在國外的原生Android還好,Google可以透過Google Play進行統一管理,管理也非常嚴格,因此原生Android其實還是比較流暢的,卡頓的問題沒有那麼嚴重。
不過這一點到了廠商這兒就完全不一樣了,每個廠商都有自己的ROM,每家廠商的管理嚴格程度也不一樣,這就讓應用廠商有了很多捷徑。國內的應用廠商許可權濫用非常嚴重,各種不講道理的後臺啟動、以及各種各樣的監控,後臺殺都殺不掉,不斷地自動重啟,耗費硬體資源。
國內的應用恨不得一個App要把你吃喝拉撒睡所有的事情都給你解決了,訂機票火車票、點外賣、買電影票、看新聞、聊天、充話費水電費、購物......總之所有的功能都要開發,這會讓App在功能上非常臃腫,自然會佔用更多的硬體資源。
因此,Android卡頓的問題不光是Java的鍋,Android硬體、軟體廠商導致的碎片化,應用開發商又不太守規矩,功能冗雜不說、還濫用許可權,這樣的Android換什麼程式語言都難。
-
17 # 藍色的星49
如果安卓的APP都改成C或者C++,其它規則都不變,執行速度提高一倍應該沒什麼問題,記憶體消耗降低50%也沒問題,但是開發效率估計得降低90%。而且APP的執行速度還是會比不上蘋果。iOS系統的優勢在於封閉,對程式的許可權控制很嚴格,底層根本不準應用程式直接訪問;安卓是開放系統,程式設計師可以隨心所欲,想駐留後臺就駐留,想喚醒系統就喚醒。對比一下你的電腦裸奔時和裝上防毒軟體之後的區別就能理解了。
-
18 # 老酒老刀
用c寫程式,執行起來肯定比java快很多倍。
但用c開發程式也要慢很多倍。java有大量的框架和庫,也不用考慮硬體軟體環境的相容性,開發效率高得多。
一般情況下,開發效率的優先權要大於執行速度。速度不夠可以用更好的cpu更大的記憶體頂上去嘛,開發太慢,幾年寫不出一個程式,那還怎麼玩。一般只有在必要的核心和驅動才會用到c。
-
19 # 免費手機炒幣機器人
首先說結論 肯定會
android 的app是執行在一個虛擬機器內,中間就多了一層的呼叫。
另外java沒有直接編譯成二進位制,而是java byte code,需要再經過jit才能執行,這又是一比開銷。
這兩方面看 c必然快一些。
但是app開發如果也用c的話,那麼app的數量和質量看 肯定會差很多,畢竟c並不是一門容易使用的語言。如果一個系統飛快但是沒有app的話 你還會用麼
——本回答為西安鼎昂數字貨幣智慧量化(歷時收益,資料核對,實況直播)公司整理。
-
20 # MMLab
谷歌收購安卓是為了快速佔領手機作業系統市場,與iOS抗衡,平臺採用了Java開發是為了降低app開發門檻,結果就是付出GC的代價,如果用C來寫當然飛快,但這開發門檻多高啊,如果谷歌當時這麼決定,也就沒有安卓的今天了!
回覆列表
不過還是要說一下,估計結果是一樣的。安卓系統執行不去蘋果,不是因為語言問題,而是安卓系統流氓軟體太多,都想多佔資源,再多的資源也不夠用的。另外,安卓版本太多,不好控制,都自己弄自己的