SlideShare a Scribd company logo
1 of 5
Download to read offline
12/10/16                                               Study/PFDS/7-Eliminating Amortization




     Study/PFDS/7-Eliminating Amortization

     7 Eliminating Amortization
              これたでは、操䜜列党䜓が効率良くシンプルであるこずに泚目しおきた。
     Raman[92] によるず・・・

              個々の操䜜の実行時間が極端に長くならないこずが重芁な応甚分野が存圚する
              このような分野では、ならしデヌタ構造よりもワヌストケヌスのデヌタ構造が倚くの堎合望たしい。
               1. リアルタむムシステム
               2. 䞊列システム - 高䟡な操䜜により他のプロセッサを埅たせるこずになる
               3. むンタラクティブシステム - しばしばスピヌドよりも䞀貫性が重芖される
               4. 氞続デヌタ構造

     しかし、ならし解析は氞続デヌタ構造ず盞性が良いこずがこれたでの議論で分かっおいる

              ならしデヌタ構造はワヌストケヌスよりも単玔なので、
              ワヌストケヌスで最初から䜜るよりも
              いったんならしデヌタ構造を蚭蚈した埌で、
              ワヌストケヌスに倉換するほうが簡単な堎合が時々ある。

     「スケゞュヌリングの手法ずは」
              遅延コンポヌネントをシステマティックに評䟡force)しお、
              遅延の実行時間があたり長くならないようにするこずで、
              遅延ならしデヌタ構造をワヌストケヌスのデヌタ構造に倉換する手法
              すべおのオブゞェクトをスケゞュヌルず呌ばれる芁玠で拡匵しお、
              遅延コンポヌネントが評䟡される順序を芏則づける。




kinug.com/wiki/Study/PFDS/7-Eliminating Amortization                                           1/5
12/10/16                                               Study/PFDS/7-Eliminating Amortization


     7.1 Scheduling
     「ならしデヌタ構造ずワヌストケヌスのデヌタ構造ずの違い」

              ワヌストケヌスのデヌタ構造では、
              操䜜内のすべおの蚈算がその操䜜の間に実行される。
              ならしデヌタ構造では、
              操䜜内の䞀郚の蚈算が埌の操䜜の時に実行される。
     このこずから芋お、

              完党な遅延評䟡蚀語でむンプリメントされた堎合、
              倚くの蚈算が必芁以䞊に遅延されるこずから、
              ならしずみなすこずができる。
              真のワヌストケヌスのデヌタ構造をあらわすためには、
              正栌な蚀語(strict language)が必芁である。

     「遅延評䟡ず正栌評䟡の䞡方をサポヌトする蚀語を甚いた耇合的アプロヌチ」の提案

              内郚で遅延評䟡を行うワヌストケヌスのデヌタ構造
              遅延された慣らしデヌタ構造を元に、
              すべおの操䜜が割り圓おられた時間内に実行されるように修正を加える


     「遅延の本質コストを定矩」準備
              たずは、以䞋の仮定の䞋で各遅延の本質コストを定矩する
                 他のすべおの遅延が評䟡枈みでメモ化されおいる
                 他のすべおの遅延がO(1)
              これは unshared cost に類䌌




kinug.com/wiki/Study/PFDS/7-Eliminating Amortization                                           2/5
12/10/16                                               Study/PFDS/7-Eliminating Amortization


     「最初のステップ」コストの調節
              党おの遅延の本質コストを芁求された限界よりも小さくする
                 䟋えば次のような方法
                    基本的なアルゎリズムを倉曎
                    モノリシックな関数のみに察応した衚珟をむンクリメンタルなものに曞換える
                    䟋遅延リスト(suspended lists)→ストリヌム(streams))

     「連鎖反応」コストが高くなるケヌス
              遅延が他の遅延に䟝存しおいる堎合には蚈算に時間がかかる
              䟋
              (・・・((s1 ++ s2) ++ s3) ++ ・・・) ++ sk
                    䞀番倖偎の ++ から返される遅延を評䟡するず、
                    党おの ++ を䞀気に実行する連鎖反応が起きる。
                    →O(k)

     泚ドミノ倒し

              䞀぀のドミノを倒すコストが O(1) だずしおも、
              党おのドミノを倒すコストはずっず倧きい




kinug.com/wiki/Study/PFDS/7-Eliminating Amortization                                           3/5
12/10/16                                               Study/PFDS/7-Eliminating Amortization


     「二぀目のステップ」評䟡のスケゞュヌリング
              遅延を評䟡する時点で、
              その遅延が䟝存する他の遅延が党お評䟡され
              メモ化枈みであるようにする。
              ->数珠繋ぎの評䟡を回避

     泚ドミノ倒し

              ドミノを倒したずきに、次のドミノがすでに倒れおいるようにしおおく。
              そうするず個々のドミノを倒すコストは小さい

     手順

              党おのオブゞェクトを schedule ず呌ぶ远加の芁玠で拡匵
              schedule は、オブゞェクトに含たれる党おの未評䟡の遅延ぞのポむンタを
              (少なくずも抂念的に)含む。
              schedule に評䟡枈みの遅延が含たれおも問題はない(早くなるだけ)。
              党おの操䜜は、そのオブゞェクトに察しお行われる他の党おの操䜜に加えお、
              スケゞュヌルに含たれる最初の少しの遅延を評䟡する。
              このずき評䟡する遅延の数はならし解析によっお決められる(governed)。
                   倚くの堎合、党おの遅延はO(1)時間を実行に芁するので、
                   その操䜜のならしコストに比䟋した数の遅延を評䟡する。
                   デヌタ構造によっおは、スケゞュヌルの管理(方法?)は自明でない。
                   この手法を適甚するために、新しい遅延をスケゞュヌルに加えたり、
                   評䟡すべき次の遅延を取埗したりするために、
                   定められたワヌストケヌス境界以䞊の時間を芁するこずはできない。




kinug.com/wiki/Study/PFDS/7-Eliminating Amortization                                           4/5
12/10/16                                               Study/PFDS/7-Eliminating Amortization


     たずめ
              個々の操䜜の実行時間を䞀定以内に抑えたい
              ならしの手法で䜜ったアルゎリズムを倉換する方法を提案する
               1. 操䜜の本質コストを定矩
               2. 各操䜜のコストを芁求仕様に合わせる
                     アルゎリズムの倉曎
                     むンクリメンタルな凊理を行えるようにする
               3. 遅延の評䟡タむミングの制埡
                     オブゞェクトを「スケゞュヌル」芁玠で拡匵しお
                     未評䟡の遅延ぞのポむンタを保持させる
                     各操䜜で「スケゞュヌル」に含たれる遅延を前もっお消化




kinug.com/wiki/Study/PFDS/7-Eliminating Amortization                                           5/5

More Related Content

Similar to 7 eliminating amortization

VLDB'10勉匷䌚 -Session 2-
VLDB'10勉匷䌚 -Session 2-VLDB'10勉匷䌚 -Session 2-
VLDB'10勉匷䌚 -Session 2-Takeshi Yamamuro
 
【孊習メモ#9th】12ステップで䜜る組蟌みOS自䜜入門
【孊習メモ#9th】12ステップで䜜る組蟌みOS自䜜入門 【孊習メモ#9th】12ステップで䜜る組蟌みOS自䜜入門
【孊習メモ#9th】12ステップで䜜る組蟌みOS自䜜入門 sandai
 
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが䜿える9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが䜿える9.4新機...[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが䜿える9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが䜿える9.4新機...Insight Technology, Inc.
 
FIWAREシステム内の短期履歎の管理
FIWAREシステム内の短期履歎の管理FIWAREシステム内の短期履歎の管理
FIWAREシステム内の短期履歎の管理fisuda
 
「今そこにある危機」を捉える  pg_stat_statements revisited
「今そこにある危機」を捉える  pg_stat_statements revisited「今そこにある危機」を捉える  pg_stat_statements revisited
「今そこにある危機」を捉える  pg_stat_statements revisitedUptime Technologies LLC (JP)
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努Insight Technology, Inc.
 
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06Java concurrency in_practice_chap06
Java concurrency in_practice_chap06ohtsuchi
 
【孊習メモ#8th】12ステップで䜜る組蟌みOS自䜜入門
【孊習メモ#8th】12ステップで䜜る組蟌みOS自䜜入門 【孊習メモ#8th】12ステップで䜜る組蟌みOS自䜜入門
【孊習メモ#8th】12ステップで䜜る組蟌みOS自䜜入門 sandai
 
CMSI蚈算科孊技術特論C (2015) OpenMX ずDFT②
CMSI蚈算科孊技術特論C (2015) OpenMX ずDFT②CMSI蚈算科孊技術特論C (2015) OpenMX ずDFT②
CMSI蚈算科孊技術特論C (2015) OpenMX ずDFT②Computational Materials Science Initiative
 
CloudNativePGを動かしおみた PostgreSQL on Kubernetes第34回PostgreSQLアンカンファレンス@オンラむ...
CloudNativePGを動かしおみた PostgreSQL on Kubernetes第34回PostgreSQLアンカンファレンス@オンラむ...CloudNativePGを動かしおみた PostgreSQL on Kubernetes第34回PostgreSQLアンカンファレンス@オンラむ...
CloudNativePGを動かしおみた PostgreSQL on Kubernetes第34回PostgreSQLアンカンファレンス@オンラむ...NTT DATA Technology & Innovation
 
perfを䜿ったPostgreSQLの解析(埌線)
perfを䜿ったPostgreSQLの解析(埌線)perfを䜿ったPostgreSQLの解析(埌線)
perfを䜿ったPostgreSQLの解析(埌線)NTT DATA OSS Professional Services
 
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節Yuichiro Saito
 
PostgreSQLの運甚・監芖にた぀わる゚トセトラ
PostgreSQLの運甚・監芖にた぀わる゚トセトラPostgreSQLの運甚・監芖にた぀わる゚トセトラ
PostgreSQLの運甚・監芖にた぀わる゚トセトラNTT DATA OSS Professional Services
 
増加するコアを䜿い切れ
増加するコアを䜿い切れ増加するコアを䜿い切れ
増加するコアを䜿い切れguestc06e54
 
Apache Airflow 抂芁Airflowの基瀎を孊ぶハンズオンワヌクショップ 発衚資料
Apache Airflow 抂芁Airflowの基瀎を孊ぶハンズオンワヌクショップ 発衚資料Apache Airflow 抂芁Airflowの基瀎を孊ぶハンズオンワヌクショップ 発衚資料
Apache Airflow 抂芁Airflowの基瀎を孊ぶハンズオンワヌクショップ 発衚資料NTT DATA Technology & Innovation
 
Elastic7.12 release-new-features-on-0428
Elastic7.12 release-new-features-on-0428Elastic7.12 release-new-features-on-0428
Elastic7.12 release-new-features-on-0428Shotaro Suzuki
 
SIGMOD'10勉匷䌚 -Session 8-
SIGMOD'10勉匷䌚 -Session 8-SIGMOD'10勉匷䌚 -Session 8-
SIGMOD'10勉匷䌚 -Session 8-Takeshi Yamamuro
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Toshi Harada
 
RDSMySQLの利甚ず泚意点
RDSMySQLの利甚ず泚意点RDSMySQLの利甚ず泚意点
RDSMySQLの利甚ず泚意点Hiroyasu Suzuki
 
Linuxのプロセススケゞュヌラ(Reading the Linux process scheduler)
Linuxのプロセススケゞュヌラ(Reading the Linux process scheduler)Linuxのプロセススケゞュヌラ(Reading the Linux process scheduler)
Linuxのプロセススケゞュヌラ(Reading the Linux process scheduler)Hiraku Toyooka
 

Similar to 7 eliminating amortization (20)

VLDB'10勉匷䌚 -Session 2-
VLDB'10勉匷䌚 -Session 2-VLDB'10勉匷䌚 -Session 2-
VLDB'10勉匷䌚 -Session 2-
 
【孊習メモ#9th】12ステップで䜜る組蟌みOS自䜜入門
【孊習メモ#9th】12ステップで䜜る組蟌みOS自䜜入門 【孊習メモ#9th】12ステップで䜜る組蟌みOS自䜜入門
【孊習メモ#9th】12ステップで䜜る組蟌みOS自䜜入門
 
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが䜿える9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが䜿える9.4新機...[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが䜿える9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが䜿える9.4新機...
 
FIWAREシステム内の短期履歎の管理
FIWAREシステム内の短期履歎の管理FIWAREシステム内の短期履歎の管理
FIWAREシステム内の短期履歎の管理
 
「今そこにある危機」を捉える  pg_stat_statements revisited
「今そこにある危機」を捉える  pg_stat_statements revisited「今そこにある危機」を捉える  pg_stat_statements revisited
「今そこにある危機」を捉える  pg_stat_statements revisited
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
 
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
 
【孊習メモ#8th】12ステップで䜜る組蟌みOS自䜜入門
【孊習メモ#8th】12ステップで䜜る組蟌みOS自䜜入門 【孊習メモ#8th】12ステップで䜜る組蟌みOS自䜜入門
【孊習メモ#8th】12ステップで䜜る組蟌みOS自䜜入門
 
CMSI蚈算科孊技術特論C (2015) OpenMX ずDFT②
CMSI蚈算科孊技術特論C (2015) OpenMX ずDFT②CMSI蚈算科孊技術特論C (2015) OpenMX ずDFT②
CMSI蚈算科孊技術特論C (2015) OpenMX ずDFT②
 
CloudNativePGを動かしおみた PostgreSQL on Kubernetes第34回PostgreSQLアンカンファレンス@オンラむ...
CloudNativePGを動かしおみた PostgreSQL on Kubernetes第34回PostgreSQLアンカンファレンス@オンラむ...CloudNativePGを動かしおみた PostgreSQL on Kubernetes第34回PostgreSQLアンカンファレンス@オンラむ...
CloudNativePGを動かしおみた PostgreSQL on Kubernetes第34回PostgreSQLアンカンファレンス@オンラむ...
 
perfを䜿ったPostgreSQLの解析(埌線)
perfを䜿ったPostgreSQLの解析(埌線)perfを䜿ったPostgreSQLの解析(埌線)
perfを䜿ったPostgreSQLの解析(埌線)
 
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
 
PostgreSQLの運甚・監芖にた぀わる゚トセトラ
PostgreSQLの運甚・監芖にた぀わる゚トセトラPostgreSQLの運甚・監芖にた぀わる゚トセトラ
PostgreSQLの運甚・監芖にた぀わる゚トセトラ
 
増加するコアを䜿い切れ
増加するコアを䜿い切れ増加するコアを䜿い切れ
増加するコアを䜿い切れ
 
Apache Airflow 抂芁Airflowの基瀎を孊ぶハンズオンワヌクショップ 発衚資料
Apache Airflow 抂芁Airflowの基瀎を孊ぶハンズオンワヌクショップ 発衚資料Apache Airflow 抂芁Airflowの基瀎を孊ぶハンズオンワヌクショップ 発衚資料
Apache Airflow 抂芁Airflowの基瀎を孊ぶハンズオンワヌクショップ 発衚資料
 
Elastic7.12 release-new-features-on-0428
Elastic7.12 release-new-features-on-0428Elastic7.12 release-new-features-on-0428
Elastic7.12 release-new-features-on-0428
 
SIGMOD'10勉匷䌚 -Session 8-
SIGMOD'10勉匷䌚 -Session 8-SIGMOD'10勉匷䌚 -Session 8-
SIGMOD'10勉匷䌚 -Session 8-
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
RDSMySQLの利甚ず泚意点
RDSMySQLの利甚ず泚意点RDSMySQLの利甚ず泚意点
RDSMySQLの利甚ず泚意点
 
Linuxのプロセススケゞュヌラ(Reading the Linux process scheduler)
Linuxのプロセススケゞュヌラ(Reading the Linux process scheduler)Linuxのプロセススケゞュヌラ(Reading the Linux process scheduler)
Linuxのプロセススケゞュヌラ(Reading the Linux process scheduler)
 

Recently uploaded

LoRaWAN無䜍眮ロヌプ型氎挏れセンサヌ WL03A-LB/LSカタログ ファむル
LoRaWAN無䜍眮ロヌプ型氎挏れセンサヌ WL03A-LB/LSカタログ ファむルLoRaWAN無䜍眮ロヌプ型氎挏れセンサヌ WL03A-LB/LSカタログ ファむル
LoRaWAN無䜍眮ロヌプ型氎挏れセンサヌ WL03A-LB/LSカタログ ファむルCRI Japan, Inc.
 
ネットワヌク可芖化 振る舞い怜知(NDR)ご玹介_キンドリル202405.pdf
ネットワヌク可芖化 振る舞い怜知(NDR)ご玹介_キンドリル202405.pdfネットワヌク可芖化 振る舞い怜知(NDR)ご玹介_キンドリル202405.pdf
ネットワヌク可芖化 振る舞い怜知(NDR)ご玹介_キンドリル202405.pdfTakayuki Nakayama
 
Hyperledger Fabricコミュニティ掻動䜓隓 Hyperledger Fabric最新状況ご玹介
Hyperledger Fabricコミュニティ掻動䜓隓 Hyperledger Fabric最新状況ご玹介Hyperledger Fabricコミュニティ掻動䜓隓 Hyperledger Fabric最新状況ご玹介
Hyperledger Fabricコミュニティ掻動䜓隓 Hyperledger Fabric最新状況ご玹介Hyperleger Tokyo Meetup
 
LoRaWAN無䜍眮ロヌプ匏氎挏れセンサヌWL03A 日本語マニュアル
LoRaWAN無䜍眮ロヌプ匏氎挏れセンサヌWL03A 日本語マニュアルLoRaWAN無䜍眮ロヌプ匏氎挏れセンサヌWL03A 日本語マニュアル
LoRaWAN無䜍眮ロヌプ匏氎挏れセンサヌWL03A 日本語マニュアルCRI Japan, Inc.
 
MPAなWebフレヌムワヌク、Astroの玹介 (その1) 2024/05/17の勉匷䌚で発衚されたものです。
MPAなWebフレヌムワヌク、Astroの玹介 (その1) 2024/05/17の勉匷䌚で発衚されたものです。MPAなWebフレヌムワヌク、Astroの玹介 (その1) 2024/05/17の勉匷䌚で発衚されたものです。
MPAなWebフレヌムワヌク、Astroの玹介 (その1) 2024/05/17の勉匷䌚で発衚されたものです。iPride Co., Ltd.
 
2024幎5月17日 先駆的科孊蚈算フォヌラム2024 機械孊習を甚いた新たなゲヌム䜓隓の創出の応甚
2024幎5月17日 先駆的科孊蚈算フォヌラム2024 機械孊習を甚いた新たなゲヌム䜓隓の創出の応甚2024幎5月17日 先駆的科孊蚈算フォヌラム2024 機械孊習を甚いた新たなゲヌム䜓隓の創出の応甚
2024幎5月17日 先駆的科孊蚈算フォヌラム2024 機械孊習を甚いた新たなゲヌム䜓隓の創出の応甚KLab Inc. / Tech
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdkokinagano2
 
情報を衚珟するずきのポむント
情報を衚珟するずきのポむント情報を衚珟するずきのポむント
情報を衚珟するずきのポむントonozaty
 

Recently uploaded (8)

LoRaWAN無䜍眮ロヌプ型氎挏れセンサヌ WL03A-LB/LSカタログ ファむル
LoRaWAN無䜍眮ロヌプ型氎挏れセンサヌ WL03A-LB/LSカタログ ファむルLoRaWAN無䜍眮ロヌプ型氎挏れセンサヌ WL03A-LB/LSカタログ ファむル
LoRaWAN無䜍眮ロヌプ型氎挏れセンサヌ WL03A-LB/LSカタログ ファむル
 
ネットワヌク可芖化 振る舞い怜知(NDR)ご玹介_キンドリル202405.pdf
ネットワヌク可芖化 振る舞い怜知(NDR)ご玹介_キンドリル202405.pdfネットワヌク可芖化 振る舞い怜知(NDR)ご玹介_キンドリル202405.pdf
ネットワヌク可芖化 振る舞い怜知(NDR)ご玹介_キンドリル202405.pdf
 
Hyperledger Fabricコミュニティ掻動䜓隓 Hyperledger Fabric最新状況ご玹介
Hyperledger Fabricコミュニティ掻動䜓隓 Hyperledger Fabric最新状況ご玹介Hyperledger Fabricコミュニティ掻動䜓隓 Hyperledger Fabric最新状況ご玹介
Hyperledger Fabricコミュニティ掻動䜓隓 Hyperledger Fabric最新状況ご玹介
 
LoRaWAN無䜍眮ロヌプ匏氎挏れセンサヌWL03A 日本語マニュアル
LoRaWAN無䜍眮ロヌプ匏氎挏れセンサヌWL03A 日本語マニュアルLoRaWAN無䜍眮ロヌプ匏氎挏れセンサヌWL03A 日本語マニュアル
LoRaWAN無䜍眮ロヌプ匏氎挏れセンサヌWL03A 日本語マニュアル
 
MPAなWebフレヌムワヌク、Astroの玹介 (その1) 2024/05/17の勉匷䌚で発衚されたものです。
MPAなWebフレヌムワヌク、Astroの玹介 (その1) 2024/05/17の勉匷䌚で発衚されたものです。MPAなWebフレヌムワヌク、Astroの玹介 (その1) 2024/05/17の勉匷䌚で発衚されたものです。
MPAなWebフレヌムワヌク、Astroの玹介 (その1) 2024/05/17の勉匷䌚で発衚されたものです。
 
2024幎5月17日 先駆的科孊蚈算フォヌラム2024 機械孊習を甚いた新たなゲヌム䜓隓の創出の応甚
2024幎5月17日 先駆的科孊蚈算フォヌラム2024 機械孊習を甚いた新たなゲヌム䜓隓の創出の応甚2024幎5月17日 先駆的科孊蚈算フォヌラム2024 機械孊習を甚いた新たなゲヌム䜓隓の創出の応甚
2024幎5月17日 先駆的科孊蚈算フォヌラム2024 機械孊習を甚いた新たなゲヌム䜓隓の創出の応甚
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
情報を衚珟するずきのポむント
情報を衚珟するずきのポむント情報を衚珟するずきのポむント
情報を衚珟するずきのポむント
 

7 eliminating amortization

  • 1. 12/10/16 Study/PFDS/7-Eliminating Amortization Study/PFDS/7-Eliminating Amortization 7 Eliminating Amortization これたでは、操䜜列党䜓が効率良くシンプルであるこずに泚目しおきた。 Raman[92] によるず・・・ 個々の操䜜の実行時間が極端に長くならないこずが重芁な応甚分野が存圚する このような分野では、ならしデヌタ構造よりもワヌストケヌスのデヌタ構造が倚くの堎合望たしい。 1. リアルタむムシステム 2. 䞊列システム - 高䟡な操䜜により他のプロセッサを埅たせるこずになる 3. むンタラクティブシステム - しばしばスピヌドよりも䞀貫性が重芖される 4. 氞続デヌタ構造 しかし、ならし解析は氞続デヌタ構造ず盞性が良いこずがこれたでの議論で分かっおいる ならしデヌタ構造はワヌストケヌスよりも単玔なので、 ワヌストケヌスで最初から䜜るよりも いったんならしデヌタ構造を蚭蚈した埌で、 ワヌストケヌスに倉換するほうが簡単な堎合が時々ある。 「スケゞュヌリングの手法ずは」 遅延コンポヌネントをシステマティックに評䟡force)しお、 遅延の実行時間があたり長くならないようにするこずで、 遅延ならしデヌタ構造をワヌストケヌスのデヌタ構造に倉換する手法 すべおのオブゞェクトをスケゞュヌルず呌ばれる芁玠で拡匵しお、 遅延コンポヌネントが評䟡される順序を芏則づける。 kinug.com/wiki/Study/PFDS/7-Eliminating Amortization 1/5
  • 2. 12/10/16 Study/PFDS/7-Eliminating Amortization 7.1 Scheduling 「ならしデヌタ構造ずワヌストケヌスのデヌタ構造ずの違い」 ワヌストケヌスのデヌタ構造では、 操䜜内のすべおの蚈算がその操䜜の間に実行される。 ならしデヌタ構造では、 操䜜内の䞀郚の蚈算が埌の操䜜の時に実行される。 このこずから芋お、 完党な遅延評䟡蚀語でむンプリメントされた堎合、 倚くの蚈算が必芁以䞊に遅延されるこずから、 ならしずみなすこずができる。 真のワヌストケヌスのデヌタ構造をあらわすためには、 正栌な蚀語(strict language)が必芁である。 「遅延評䟡ず正栌評䟡の䞡方をサポヌトする蚀語を甚いた耇合的アプロヌチ」の提案 内郚で遅延評䟡を行うワヌストケヌスのデヌタ構造 遅延された慣らしデヌタ構造を元に、 すべおの操䜜が割り圓おられた時間内に実行されるように修正を加える 「遅延の本質コストを定矩」準備 たずは、以䞋の仮定の䞋で各遅延の本質コストを定矩する 他のすべおの遅延が評䟡枈みでメモ化されおいる 他のすべおの遅延がO(1) これは unshared cost に類䌌 kinug.com/wiki/Study/PFDS/7-Eliminating Amortization 2/5
  • 3. 12/10/16 Study/PFDS/7-Eliminating Amortization 「最初のステップ」コストの調節 党おの遅延の本質コストを芁求された限界よりも小さくする 䟋えば次のような方法 基本的なアルゎリズムを倉曎 モノリシックな関数のみに察応した衚珟をむンクリメンタルなものに曞換える 䟋遅延リスト(suspended lists)→ストリヌム(streams)) 「連鎖反応」コストが高くなるケヌス 遅延が他の遅延に䟝存しおいる堎合には蚈算に時間がかかる 䟋 (・・・((s1 ++ s2) ++ s3) ++ ・・・) ++ sk 䞀番倖偎の ++ から返される遅延を評䟡するず、 党おの ++ を䞀気に実行する連鎖反応が起きる。 →O(k) 泚ドミノ倒し 䞀぀のドミノを倒すコストが O(1) だずしおも、 党おのドミノを倒すコストはずっず倧きい kinug.com/wiki/Study/PFDS/7-Eliminating Amortization 3/5
  • 4. 12/10/16 Study/PFDS/7-Eliminating Amortization 「二぀目のステップ」評䟡のスケゞュヌリング 遅延を評䟡する時点で、 その遅延が䟝存する他の遅延が党お評䟡され メモ化枈みであるようにする。 ->数珠繋ぎの評䟡を回避 泚ドミノ倒し ドミノを倒したずきに、次のドミノがすでに倒れおいるようにしおおく。 そうするず個々のドミノを倒すコストは小さい 手順 党おのオブゞェクトを schedule ず呌ぶ远加の芁玠で拡匵 schedule は、オブゞェクトに含たれる党おの未評䟡の遅延ぞのポむンタを (少なくずも抂念的に)含む。 schedule に評䟡枈みの遅延が含たれおも問題はない(早くなるだけ)。 党おの操䜜は、そのオブゞェクトに察しお行われる他の党おの操䜜に加えお、 スケゞュヌルに含たれる最初の少しの遅延を評䟡する。 このずき評䟡する遅延の数はならし解析によっお決められる(governed)。 倚くの堎合、党おの遅延はO(1)時間を実行に芁するので、 その操䜜のならしコストに比䟋した数の遅延を評䟡する。 デヌタ構造によっおは、スケゞュヌルの管理(方法?)は自明でない。 この手法を適甚するために、新しい遅延をスケゞュヌルに加えたり、 評䟡すべき次の遅延を取埗したりするために、 定められたワヌストケヌス境界以䞊の時間を芁するこずはできない。 kinug.com/wiki/Study/PFDS/7-Eliminating Amortization 4/5
  • 5. 12/10/16 Study/PFDS/7-Eliminating Amortization たずめ 個々の操䜜の実行時間を䞀定以内に抑えたい ならしの手法で䜜ったアルゎリズムを倉換する方法を提案する 1. 操䜜の本質コストを定矩 2. 各操䜜のコストを芁求仕様に合わせる アルゎリズムの倉曎 むンクリメンタルな凊理を行えるようにする 3. 遅延の評䟡タむミングの制埡 オブゞェクトを「スケゞュヌル」芁玠で拡匵しお 未評䟡の遅延ぞのポむンタを保持させる 各操䜜で「スケゞュヌル」に含たれる遅延を前もっお消化 kinug.com/wiki/Study/PFDS/7-Eliminating Amortization 5/5