PHP7とSwiftの比較。

 前稿の続き。

 PHPの $mojiretsu .= $alphabet[$angou[$count]] という文字結合は、Swiftの mojiretsu += alphabet[angou[count]] と同じなので、比較をフェアにするためSwiftの joined() と方式を揃えてみた。

 PHP側のコードもSwift同様小ループの中で文字結合するのをやめ、一旦配列($mojiretsux)に格納し、最後に implode("", $mojiretsux) で一括結合。しかしなぜか1-2秒遅くなった。

 またどちらも配列のコピーをやめ、30行だったコードを25行まで無駄を省いたところ、Swiftは30秒→27秒に、PHPは大して変わらず。

 PHPのバージョンが7.1.33だったので7.4.8に入れ替えたら、通常の文字結合(.=)方式で15秒→12秒になった。最適化が進んでいる。

 Swiftのコンパイルオプションを -O から -Ounchecked に変えたところ27秒から26秒になった。

 いずれも100万回あたり。

 オモシロイことに、文字数を100文字に減らし、ループを2倍の200万回にしたところ、PHPは9秒、Swiftは50秒となった。

 というわけでSwiftはメモリ管理が遅い(保護は高度かもしれないが)と推察される。

 ※知能のブログ第三シーズンに関わる内容なので、近々別途細かく書いてみる。

 Swiftコンパイラがアップル自社Aチップ(ARM)への最適化が進んでいるのに対し(iPhone、iPad向け)、Swift発表当初からIntel CPUはいずれ捨てる前提だったから最適化する気がない可能性がある。

 で、アップルシリコン搭載Macが登場した際、「Swiftで書かれたアプリケーションがIntel MacのNN倍速く動作する」と話題になるのかもしれない。その時のために予習は続けるとする。

 それに対しPHP7は教科書通りの基本構文だけでパフォーマンスを最大限に発揮できる。コードの“書き方”に時間を割く必要がなく非常に生産性が高い。「優れたコードを書くこと」は人生の目的ではなく、書かれたコードによってもたらされたもの(商品やサービスなど)が富を生むことを考えれば、ソコに専念できる言語の方が良きパートナーと言える。

 Swift 2日目(笑)の見解なので、“へー”程度に受け止めていただきたい。