目次
はじめに
Julia1.9がリリースされたので、
公式ブログの記事を元に、今回のリリースの代表的なHighlightsを
連投ツイートでまとめました。
Julia 1.9 Highlightsまとめ
Julia 1.9がリリースされましたね🎉。今回の自分の勉強がてら、今回のリリースの代表的なトピックスを、こちらの公式の説明記事の基づいて紹介したいと思います: Julia 1.9 Highlights https://t.co/Z3CfnYJVW0
— Atsushi Sakai (@Atsushi_twi) 2023年5月14日
1番の目玉はネイティブコードのキャッシュです。Juliaの最初のコード実行までの時間(TTFX)が長いという有名な問題に対して、これまでも型や、変数、関数の情報や型推論の結果はキャッシュしていましたが、v1.9からはCPUで実行されるネイティブコードも、キャッシュされます。
— Atsushi Sakai (@Atsushi_twi) 2023年5月14日
下記の図のように、v1.9ではTTFXが多くの有名パッケージにおいてかなり短くなっています。ただ、トレードオフとして、ネイティブコードのキャッシュによりコンパイル時間やキャッシュファイルサイズが大きくなってしまうそうです。 pic.twitter.com/Or4zBoVf1U
— Atsushi Sakai (@Atsushi_twi) 2023年5月14日
またこちらの公式ツールによりまたパッケージだけでなく、各ユーザ毎にスタートアップパッケージを作ることで、日々のタスクでネイティブコードキャッシュの恩恵に預かることができます。: https://t.co/hZKoKR1OxW
— Atsushi Sakai (@Atsushi_twi) 2023年5月14日
次の機能はPackage extensionsです。Juliaの多重ディスパッチは強力ですが、様々な外部パッケージを拡張するパッケージを作り、使うと、使わない沢山の依存をロードすることになります。これ使うと、ある特定のコードを使う時だけロードするパッケージなどを指定でき、ロード時間を削減できます。
— Atsushi Sakai (@Atsushi_twi) 2023年5月14日
次の新機能はHeap snapshotです。これはProfileモジュールの`take_heap_snapshot`関数を使うと、簡単にヒープメモリのスナップショットを取ることができ、そのデータをChromeブラウザのdevツールでメモリの消費状況を確認できます。
— Atsushi Sakai (@Atsushi_twi) 2023年5月14日
次の機能はjuliaの新しいコマンドラインオプションの—heap-size-hintです。ここでメモリ量を指定するとJuliaのGCはその量以上のメモリが消費されると積極的無駄なメモリを解放するようになります。これによりメモリ消費量が大きいアプリでの適切なリソース制御が可能になります。
— Atsushi Sakai (@Atsushi_twi) 2023年5月14日
次の改善はソートアルゴリズムの改善です。データの型に応じて、基数ソートとScratchQuickSortを使い分けることにより、安定なソートでありつつ、高いパフォーマンスを得ることができます。特にFloat16では3-50倍ほどv1.8に比べてパフォーマンスが上がったそうです。
— Atsushi Sakai (@Atsushi_twi) 2023年5月15日
次は優先(interactive)スレッドです。これまでJuliaのスレッドには優先度はありませんでしたが、Webサーバやハードビートなどのために、あるスレッドの優先度を上げたい場合があります。v1.9からはspawnマクロに:interactiveをつけると優先度高く実行されるようになりました。 https://t.co/UYVeeIkEHh
— Atsushi Sakai (@Atsushi_twi) 2023年5月15日
REPLも強化されました。REPLの中での式の実行を、Mainモジュールだけでなく、他のモジュール内で実行するContextual module REPLや、IPythonのような各プロンプトに番号をつけるNumbered promptモードが追加されました。https://t.co/E1goezm8A2
— Atsushi Sakai (@Atsushi_twi) 2023年5月15日
最後にPkgモードでwhyコマンドを使うとパッケージのdependency graphが見れたり、Apple SiliconがTier1対応になり、Float16の計算が最適化されたり、などいろいろAppleユーザに嬉しい改善もされています。LLVMのバージョンもv14に更新されました。
— Atsushi Sakai (@Atsushi_twi) 2023年5月15日
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。