「Jank」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
'''Jank'''(読み:じゃんく)とは、[[メインスレッド]]に高負荷がかかり、[[ユーザーインターフェース]]がガクガクまたはフリーズしたかのような状態になることを言います。
+
'''Jank'''(読み:じゃんく)とは、[[メインスレッド]]に高負荷がかかり、[[ユーザーインターフェース]]がガクガクまたはフリーズしたかのような状態になることである。
  
 
== 概要 ==
 
== 概要 ==
一般的に[[ドローコール]]は[[メインスレッド]]([[UIスレッド]]とも呼ばれる)でしか実行できない。これは[[Windows]]でも[[macOS]]でも[[iOS]]でも[[Android]]でも[[.NET]]でも[[Java]]でも同じです。
+
一般的に[[ドローコール]]は[[メインスレッド]]([[UIスレッド]]とも呼ばれる)でしか実行できない。これは[[Windows]]でも[[macOS]]でも[[iOS]]でも[[Android]]でも[[.NET]]でも[[Java]]でも同じだ。
  
たとえば8コア(8スレッド)の[[ハードウェア]]であっても[[メインスレッド]]は常にひとつしかありません。このためメインスレッドに強烈な高負荷がかかると「処理待ちの大渋滞」を引き起こし、[[ドローコール]]がいつまで経っても呼ばれず、[[GPU]]はスカスカなのに仕事がこないため、結果として画面が更新されずガクガクになります。
+
たとえば8コア(8スレッド)の[[ハードウェア]]であっても[[メインスレッド]]は常にひとつしかない。このためメインスレッドに強烈な高負荷がかかると処理の糞詰まりを引き起こし、[[ドローコール]]がいつまで経っても呼ばれず、[[GPU]]はスカスカなのに仕事がこないため、結果として画面が更新されずガクガクになる。
  
ジャンクは主に[[シングルスレッド性能]]が低く、コア数の多さで性能を盛ってる[[コンピューター]]、身近なところでは[[スマートフォン]]の[[CPU]]([[SoC]])で発生しやすい傾向があります。とくに高効率コアと高性能コアを組み合わせたCPUでは低性能な高効率コアにメインスレッドが置かれることでジャンクが頻発し、高性能コアやGPUがスカスカになるなどといった現象が起きることも多々あります。最近の[[Android]]でもガクガクになる原因はほとんどがこれです。[[iOS]]ではジャンクが発生する[[アプリ]]の作りだと[[AppStore]]の審査で蹴られるのであまり問題になることはありません。
+
ジャンクは主にシングルスレッド性能が低く、コア数の多さで性能を盛ってる[[スマートフォン]]の[[CPU]]([[SoC]])で好発する。ジャンクは[[Android]]がガクガクになる主たる原因である。[[iOS]]ではジャンクが発生する[[アプリ]]の作りだと[[AppStore]]の審査で蹴られるのであまり問題になることはない。
  
 
== 回避策 ==
 
== 回避策 ==
 
=== 非同期化 ===
 
=== 非同期化 ===
頑張って、可能な限り、「[[非同期処理]]」を使いまくり[[プログラム]]を実装してください。
+
頑張って、可能な限り、「[[非同期処理]]」を使いまくり[[プログラム]]を実装する。
これによりメインスレッドの負荷が激減します。
+
これによりメインスレッドの負荷が激減する。
  
ただし[[マルチスレッド]]や[[非同期処理]]に精通していない[[プログラマー]]に実装させると[[バグ]]だらけになる[[諸刃の剣]]である点には注意する必要があります。
+
ただ[[マルチスレッド]]や[[非同期処理]]に精通していない[[プログラマー]]に実装させると[[バグ]]だらけになる[[諸刃の剣]]である。
  
また、第三者の作ったバックグラウンドアプリが高負荷をかけてくるような状況ではどうにもなりません。
+
また、第三者の作ったバックグラウンドアプリが高負荷をかけてくるような状況ではどうにもならない。
Androidであればプリインストールアプリなんかが[[大きなお世話]]をしてきて悪さをする場合も結構あります。
+
Androidであればプリインストールアプリなんかが悪さをする場合も結構ある。
  
 
=== ジャンクリデューサー ===
 
=== ジャンクリデューサー ===
このジャンク問題を軽減すべく、最近の[[Snapdragon]]の一部製品(型番の末尾に「G」が付く製品。[[Snapdragon 765G]]など)には「Jank Reducer」なる機能が搭載されています。[[GPU]]が一定の[[フレームレート]]を下回ったら「仕事がこねえ」「ジャンク発生したな」と判断し勝手にドローする機能のようです。詳細は不明。
+
このジャンク問題を軽減すべく、最近の[[Snapdragon]]の一部製品(型番の末尾に「G」が付く製品。[[Snapdragon 765G]]など)には「Jank Reducer」なる機能が搭載されている。これは大雑把にいえばGPUが一定の固定フレームレートを下回ったら「仕事がこねえ」「ジャンク発生したな」と判断し勝手にドローする機能のようだ。詳細は不明。

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)