自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Swift并不像蘋(píng)果說(shuō)的那么快:第一次基準(zhǔn)測(cè)試

移動(dòng)開(kāi)發(fā) iOS
性能是蘋(píng)果聲稱(chēng)新編程語(yǔ)言Swift將帶給OS X和iOS開(kāi)發(fā)人員的好處之一。然而,由獨(dú)立開(kāi)發(fā)者執(zhí)行的第一次實(shí)驗(yàn)和基準(zhǔn)測(cè)試顯示,Swift在某些場(chǎng)景的性能并不如人意。

性能是蘋(píng)果聲稱(chēng)新編程語(yǔ)言Swift將帶給OS X和iOS開(kāi)發(fā)人員的好處之一。然而,由獨(dú)立開(kāi)發(fā)者執(zhí)行的***次實(shí)驗(yàn)和基準(zhǔn)測(cè)試顯示,Swift在某些場(chǎng)景的性能并不如人意。

開(kāi)發(fā)人員Jukka Suomela在Stack Overflow發(fā)表了一篇帖子說(shuō)明他的發(fā)現(xiàn)。當(dāng)用Swift實(shí)現(xiàn)一個(gè)算法時(shí),他注意到其性能非常差。深入分析后,Jukka最終發(fā)現(xiàn)代碼的主要瓶頸來(lái)自一個(gè)數(shù)組排序這樣的簡(jiǎn)單任務(wù)。

事實(shí)上,Swift對(duì)100萬(wàn)個(gè)隨機(jī)整數(shù)的數(shù)組進(jìn)行排序,需要耗時(shí)6秒,而C++只用了0.06秒,Python為0.6秒。這些測(cè)試使用的是 -O3編譯優(yōu)化級(jí)別,這是Xcode發(fā)布構(gòu)建時(shí)常用的級(jí)別。Jukka說(shuō),如果禁用所有編譯優(yōu)化,即對(duì)應(yīng)于Xcode調(diào)試構(gòu)建的-O0,上述測(cè)試用了88 秒。

Stack Overflow上回復(fù)該帖的其他開(kāi)發(fā)人員證實(shí)了Jukka的發(fā)現(xiàn)。開(kāi)發(fā)人員sjeohp用Swift實(shí)現(xiàn)快速排序算法時(shí),發(fā)現(xiàn)如果不啟用編譯優(yōu)化(-Onone)會(huì)比C慢1000倍。另一方面,他發(fā)現(xiàn)當(dāng)強(qiáng)制積極的編譯優(yōu)化(-Ofast)時(shí),Swift比C稍快。Stack Overflow的另一個(gè)帖子描述了圖像處理測(cè)試,也強(qiáng)調(diào)了類(lèi)似的研究結(jié)果。

根據(jù)LLVM文檔, 積極優(yōu)化忽略了嚴(yán)謹(jǐn)?shù)臉?biāo)準(zhǔn)規(guī)范。-Ofast啟用了所有-O3優(yōu)化并開(kāi)啟了-ffast-math,后者放寬了IEEE或ISO的數(shù)學(xué)函數(shù)規(guī)范,可能導(dǎo)致 那些應(yīng)該具有規(guī)范保證的程序產(chǎn)生不正確的輸出。此外,-Ofast禁用了整型溢出和數(shù)組下標(biāo)越界的檢查,因此降低了Swift的安全特性。

Jukka進(jìn)行了深入分析,他在編譯器對(duì)另一個(gè)測(cè)試所生成的匯編代碼中,發(fā)現(xiàn)一個(gè)數(shù)組的簡(jiǎn)單循環(huán)產(chǎn)生了大量的內(nèi)存管理調(diào)用(保留和釋放),而這是完全沒(méi)有必要的。這個(gè)測(cè)試沒(méi)有涉及數(shù)學(xué),因此主要的性能瓶頸似乎來(lái)自這些無(wú)用的調(diào)用。

數(shù)名開(kāi)發(fā)人員指出Swift仍然處于Beta狀態(tài),這可能是Swift當(dāng)前這種行為的***解釋。具體來(lái)說(shuō),文中提到的毫無(wú)必要的釋放/保留調(diào)用暗示了ARC優(yōu)化存在一些Bug,可能不需要積極優(yōu)化就可以修復(fù)。

因?yàn)樵撜Z(yǔ)言仍處于Beta狀態(tài),蘋(píng)果不會(huì)允許開(kāi)發(fā)者提交Swift開(kāi)發(fā)的應(yīng)用進(jìn)行審查。Xcode的最終版本預(yù)計(jì)在今年秋天發(fā)布。

原文地址。

責(zé)任編輯:徐川 來(lái)源: infoq
相關(guān)推薦

2011-07-21 21:01:37

諾基亞塞班蘋(píng)果

2017-03-22 15:38:28

代碼架構(gòu)Java

2021-11-14 22:27:33

iOS蘋(píng)果系統(tǒng)

2012-04-13 10:11:58

Windows 8泄露

2022-03-16 14:59:28

打包debian模板文件

2023-09-11 00:14:46

后端團(tuán)隊(duì)項(xiàng)目

2017-09-01 14:00:04

操作系統(tǒng)蘋(píng)果OS X系統(tǒng)

2022-08-15 08:16:56

shiroWeb認(rèn)證

2010-09-02 09:32:26

私有云

2015-11-02 14:42:12

2013-02-25 09:43:22

LambdasJava8

2017-08-08 12:50:51

Serverless云端數(shù)據(jù)庫(kù)

2016-09-25 23:03:14

2013-06-03 09:28:49

游戲設(shè)計(jì)

2013-05-13 11:35:53

獨(dú)立開(kāi)發(fā)開(kāi)發(fā)經(jīng)驗(yàn)開(kāi)發(fā)感悟

2015-10-26 16:38:17

2021-02-05 08:35:21

私活程序員

2022-06-21 09:26:28

開(kāi)源項(xiàng)目PR

2012-10-19 09:27:23

Ruby

2012-01-18 11:18:12

Web App
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)