「Jank」の版間の差分
ナビゲーションに移動
検索に移動
Administrator (トーク | 投稿記録) (ページの作成:「'''Jank'''(読み:じゃんく)とは、メインスレッドに高負荷がかかり、ユーザーインターフェースがフリーズしたような…」) |
Administrator (トーク | 投稿記録) |
||
1行目: | 1行目: | ||
'''Jank'''(読み:じゃんく)とは、[[メインスレッド]]に高負荷がかかり、[[ユーザーインターフェース]]がフリーズしたような状態になる現象のことである。 | '''Jank'''(読み:じゃんく)とは、[[メインスレッド]]に高負荷がかかり、[[ユーザーインターフェース]]がフリーズしたような状態になる現象のことである。 | ||
+ | == 概要 == | ||
一般的に[[ドローコール]]は[[メインスレッド]]([[UIスレッド]]とも呼ばれる)でしか実行できない。これは[[Windows]]でも[[macOS]]でも[[iOS]]でも[[Android]]でも[[.NET]]でも[[Java]]でも同じだ。 | 一般的に[[ドローコール]]は[[メインスレッド]]([[UIスレッド]]とも呼ばれる)でしか実行できない。これは[[Windows]]でも[[macOS]]でも[[iOS]]でも[[Android]]でも[[.NET]]でも[[Java]]でも同じだ。 | ||
7行目: | 8行目: | ||
ジャンクは主にシングルスレッド性能が低く、コア数の多さで性能を盛ってる[[スマートフォン]]の[[CPU]]([[SoC]])で好発する。ジャンクは[[Android]]がガクガクになる主たる原因である。[[iOS]]ではジャンクが発生する[[アプリ]]の作りだと[[AppStore]]の審査で蹴られるのであまり問題になることはない。 | ジャンクは主にシングルスレッド性能が低く、コア数の多さで性能を盛ってる[[スマートフォン]]の[[CPU]]([[SoC]])で好発する。ジャンクは[[Android]]がガクガクになる主たる原因である。[[iOS]]ではジャンクが発生する[[アプリ]]の作りだと[[AppStore]]の審査で蹴られるのであまり問題になることはない。 | ||
+ | == 回避策 == | ||
+ | === 非同期化 === | ||
+ | 頑張って、可能な限り、非同期処理を使いまくり[[プログラム]]を実装する。 | ||
+ | [[マルチスレッド]]や[[非同期処理]]に精通していない[[プログラマー]]に実装させると[[バグ]]だらけになる[[諸刃の剣]]である。 | ||
+ | |||
+ | === ジャンクリデューサー === | ||
このジャンク問題を軽減すべく、最近の[[Snapdragon]]の一部製品(型番の末尾に「G」が付く製品。[[Snapdragon 765G]]など)には「Jank Reducer」なる機能が搭載されている。これは大雑把にいえばGPUが一定の固定フレームレートを下回ったら「仕事がこねえ」「ジャンク発生したな」と判断し勝手にドローする機能のようだ。 | このジャンク問題を軽減すべく、最近の[[Snapdragon]]の一部製品(型番の末尾に「G」が付く製品。[[Snapdragon 765G]]など)には「Jank Reducer」なる機能が搭載されている。これは大雑把にいえばGPUが一定の固定フレームレートを下回ったら「仕事がこねえ」「ジャンク発生したな」と判断し勝手にドローする機能のようだ。 |
2021年11月17日 (水) 02:25時点における版
Jank(読み:じゃんく)とは、メインスレッドに高負荷がかかり、ユーザーインターフェースがフリーズしたような状態になる現象のことである。
概要
一般的にドローコールはメインスレッド(UIスレッドとも呼ばれる)でしか実行できない。これはWindowsでもmacOSでもiOSでもAndroidでも.NETでもJavaでも同じだ。
たとえば8コア(8スレッド)のハードウェアであってもOSにメインスレッドは常にひとつしかない。このためメインスレッドに強烈な高負荷がかかると処理の糞詰まりを引き起こし、ドローコールがいつまで経っても呼ばれず、GPUはスカスカなのに仕事がこないため、結果として画面が更新されずガクガクになる。
ジャンクは主にシングルスレッド性能が低く、コア数の多さで性能を盛ってるスマートフォンのCPU(SoC)で好発する。ジャンクはAndroidがガクガクになる主たる原因である。iOSではジャンクが発生するアプリの作りだとAppStoreの審査で蹴られるのであまり問題になることはない。
回避策
非同期化
頑張って、可能な限り、非同期処理を使いまくりプログラムを実装する。 マルチスレッドや非同期処理に精通していないプログラマーに実装させるとバグだらけになる諸刃の剣である。
ジャンクリデューサー
このジャンク問題を軽減すべく、最近のSnapdragonの一部製品(型番の末尾に「G」が付く製品。Snapdragon 765Gなど)には「Jank Reducer」なる機能が搭載されている。これは大雑把にいえばGPUが一定の固定フレームレートを下回ったら「仕事がこねえ」「ジャンク発生したな」と判断し勝手にドローする機能のようだ。