プログラミングシステム論

Similar documents
1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

(5) 給 与 制 度 の 総 合 的 見 直 しの 実 施 状 況 について 概 要 の 給 与 制 度 の 総 合 的 見 直 しにおいては 俸 給 表 の 水 準 の 平 均 2の 引 き 下 げ 及 び 地 域 手 当 の 支 給 割 合 の 見 直 し 等 に 取 り 組 むとされている

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図

スライド 1

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

Sea-NACCS 利用者研修 【通関編】


いう )は 警 告 をしたときは 速 やかに その 内 容 及 び 日 時 を 当 該 警 告 を 求 める 旨 の 申 出 をした 者 に 通 知 しなければならないこととされ また 警 告 をし なかったときは 速 やかに その 旨 及 び 理 由 を 当 該 警 告 を 求 める 旨 の 申

(Microsoft Word - \221\346\202P\202U\201@\214i\212\317.doc)

1 調査名称:太田市総合交通体系調査

2011論稿_吉川宏之.indd

平成25年度 独立行政法人日本学生支援機構の役職員の報酬・給与等について

< F2D A C5817A C495B6817A>

Microsoft PowerPoint - 報告書(概要).ppt

(Microsoft PowerPoint \213\306\213\226\211\302\215X\220V\220\340\226\276\211\357\201i3\201j)

公 営 企 業 職 員 の 状 況 1 水 道 事 業 1 職 員 給 与 費 の 状 況 ア 決 算 区 分 総 費 用 純 利 益 職 員 給 与 費 総 費 用 に 占 める ( 参 考 ) 職 員 給 与 費 比 率 22 年 度 の 総 費 用 に 占 A B B/A める 職 員 給 与

弁護士報酬規定(抜粋)

PowerPoint プレゼンテーション

<4D F736F F D208E9197BF CF092CA8F88979D82CC96CA82A982E782CC984890FC82CC90AE979D81698BC792B CE3816A2E646F63>


する 婦 人 相 談 所 その 他 適 切 な 施 設 による 支 援 の 明 記 禁 止 命 令 等 をすることが できる 公 安 委 員 会 等 の 拡 大 等 の 措 置 が 講 じられたものである 第 2 改 正 法 の 概 要 1 電 子 メールを 送 信 する 行 為 の 規 制 ( 法

平 成 25 年 度 修 繕 費 事 業 計 画 書 様 式 E 自 動 車 事 業 費 ( 款 ) 営 業 費 用 ( 項 ) 車 両 保 存 費 ( 目 ) 車 両 修 繕 費 ( 節 ) 自 動 車 本 部 運 輸 課 車 両 係 ( ) 担 当 者 名 堤 智


定 性 的 情 報 財 務 諸 表 等 1. 連 結 経 営 成 績 に 関 する 定 性 的 情 報 当 第 3 四 半 期 連 結 累 計 期 間 の 業 績 は 売 上 高 につきましては 前 年 同 四 半 期 累 計 期 間 比 15.1% 減 少 の 454 億 27 百 万 円 となり

4. その 他 (1) 期 中 における 重 要 な 子 会 社 の 異 動 ( 連 結 範 囲 の 変 更 を 伴 う 特 定 子 会 社 の 異 動 ) 無 (2) 簡 便 な 会 計 処 理 及 び 四 半 期 連 結 財 務 諸 表 の 作 成 に 特 有 の 会 計 処 理 の 適 用 有

Taro-データ公安委員会相互協力事

主要生活道路について

2 平 均 病 床 数 の 平 均 病 床 数 では 療 法 人 に 対 しそれ 以 外 の 開 設 主 体 自 治 体 社 会 保 険 関 係 団 体 その 他 公 的 の 規 模 が 2.5 倍 程 度 大 きく 療 法 人 に 比 べ 公 的 病 院 の 方 が 規 模 の 大 き いことが

[2] 控 除 限 度 額 繰 越 欠 損 金 を 有 する 法 人 において 欠 損 金 発 生 事 業 年 度 の 翌 事 業 年 度 以 後 の 欠 損 金 の 繰 越 控 除 にあ たっては 平 成 27 年 度 税 制 改 正 により 次 ページ 以 降 で 解 説 する の 特 例 (

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

Microsoft Word - 目次.doc

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

質 問 票 ( 様 式 3) 質 問 番 号 62-1 質 問 内 容 鑑 定 評 価 依 頼 先 は 千 葉 県 などは 入 札 制 度 にしているが 神 奈 川 県 は 入 札 なのか?または 随 契 なのか?その 理 由 は? 地 価 調 査 業 務 は 単 にそれぞれの 地 点 の 鑑 定

1 はじめに 計 画 の 目 的 国 は 平 成 18 年 度 に 住 生 活 基 本 法 を 制 定 し 住 まいに 関 する 基 本 的 な 計 画 となる 住 生 活 基 本 計 画 ( 全 国 計 画 )を 策 定 し 住 宅 セーフティネットの 確 保 や 住 生 活 の 質 の 向 上

(2) 共 通 費 について 第 2 編 共 通 費 2 12 共 通 費 算 定 に 関 する 数 値 の 取 り 扱 い (1) 積 み 上 げによる 算 定 積 み 上 げによる 算 定 は 第 3 編 18に 準 ずる (2) 率 による 算 定 公 共 建 築 工 事 共 通 費 積 算

<819A955D89BF92B28F BC690ED97AA8EBA81418FA48BC682CC8A8890AB89BB816A32322E786C7378>

<6D33335F976C8EAE CF6955C A2E786C73>

(4) ラスパイレス 指 数 の 状 況 ( 各 年 4 月 1 日 現 在 ) ( 例 ) ( 例 ) 15 (H2) (H2) (H24) (H24) (H25.4.1) (H25.4.1) (H24) (H24)

<4D F736F F F696E74202D B E E88E68C9A90DD8BC65F E DC58F4994C52E >

4. その 他 (1) 期 中 における 重 要 な 子 会 社 の 異 動 ( 連 結 範 囲 の 変 更 を 伴 う 特 定 子 会 社 の 異 動 ) 無 (2) 簡 便 な 会 計 処 理 及 び 四 半 期 連 結 財 務 諸 表 の 作 成 に 特 有 の 会 計 処 理 の 適 用 有

総合評価点算定基準(簡易型建築・電気・管工事)

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

施 工 P お 気 に 入 り データを 活 用 するための 準 備 施 工 パッケージデータをお 気 に 入 りに 登 録 し 単 価 を 閲 覧 するための 方 法 を 説 明 します 1. 施 工 パッケージデータをダウンロードする 施 工 パッケージデータのダウンロードは 下 記 から 行

18 国立高等専門学校機構

その 他 事 業 推 進 体 制 平 成 20 年 3 月 26 日 に 石 垣 島 国 営 土 地 改 良 事 業 推 進 協 議 会 を 設 立 し 事 業 を 推 進 ( 構 成 : 石 垣 市 石 垣 市 議 会 石 垣 島 土 地 改 良 区 石 垣 市 農 業 委 員 会 沖 縄 県 農

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

0439 研究開発推進事業(防衛省所管計上)250614

Microsoft PowerPoint - OS10.pptx

<4D F736F F D C93FA967B91E5906B8DD082D682CC91CE899E2E646F6378>

経験発表

1

平成16年年金制度改正 ~年金の昔・今・未来を考える~

SchITコモンズ【活用編】

<6D313588EF8FE991E58A778D9191E5834B C8EAE DC58F4992F18F6F816A F990B32E786C73>

Microsoft Word - 佐野市生活排水処理構想(案).doc

<81696D373188A E58A77816A E93788D9191E5834B C8EAE82502E786C73>

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

(4) 給 与 制 度 の 総 合 的 見 直 しの 実 施 状 況 について 概 要 国 の 給 与 制 度 の 総 合 的 見 直 しにおいては 俸 給 表 の 水 準 の 平 均 2の 引 下 げ 及 び 地 域 手 当 の 支 給 割 合 の 見 直 し 等 に 取 り 組 むとされている.

施 設 維 持 管 理 機 能 一 覧 1. 中 長 期 保 全 計 画 作 成 2. 中 長 期 保 全 計 画 集 計 3. 点 検 記 録 情 報 管 理 4. 修 繕 履 歴 情 報 管 理 2

スライド 1

* 解 雇 の 合 理 性 相 当 性 は 整 理 解 雇 の 場 合 には 1 整 理 解 雇 の 必 要 性 2 人 員 選 択 の 相 当 性 3 解 雇 回 避 努 力 義 務 の 履 行 4 手 続 きの 相 当 性 の 四 要 件 ( 要 素 )で 判 断 され る 部 門 閉 鎖 型

医療費控除の入力編

<4D F736F F D2090BC8BBB959491BA8F5A91EE8A C52E646F63>

文化政策情報システムの運用等

(別紙3)保険会社向けの総合的な監督指針の一部を改正する(案)

Taro-条文.jtd

6 構 造 等 コンクリートブロック 造 平 屋 建 て4 戸 長 屋 16 棟 64 戸 建 築 年 1 戸 当 床 面 積 棟 数 住 戸 改 善 後 床 面 積 昭 和 42 年 36.00m m2 昭 和 43 年 36.50m m2 昭 和 44 年 36.

2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e

省 九 州 地 方 整 備 局 長 若 しくは 宮 崎 県 知 事 に 意 見 を 提 出 することができる ( 役 員 の 任 命 ) 第 8 条 理 事 長 及 び 監 事 は 宮 崎 県 知 事 が 任 命 する 2 理 事 は 理 事 長 が 任 命 する 3 副 理 事 長 は 理 事 長

2. 予 測 2.1. 予 測 項 目 予 測 項 目 は 以 下 のとおりとした 1 埋 設 廃 棄 物 の 掘 削 除 去 に 伴 う 廃 棄 物 2 造 成 等 の 施 工 の 一 時 的 な 影 響 による 建 設 工 事 に 伴 う 副 産 物 ( 建 設 発 生 土 建 設 廃 棄 物

2 役 員 の 報 酬 等 の 支 給 状 況 役 名 法 人 の 長 理 事 理 事 ( 非 常 勤 ) 平 成 25 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 16,936 10,654 4,36

企業のおけるWebガバナンスの構築

も た ら そ う と す る 効 標 標 名 標 設 定 考 え 方 単 位 4 年 度 実 績 5 年 度 見 込 6 年 度 計 画 7 年 度 計 画 8 年 度 計 画 法 規 定 に 基 づく 選 挙 事 務 ため 標 というような は 困 難 である 事 業 実 施 妥 当 性 活 動

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

スライド 0

スライド 1

Microsoft Word - H27概要版

Microsoft Word 行革PF法案-0概要

った 場 合 など 監 事 の 任 務 懈 怠 の 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 減 算 する (8) 役 員 の 法 人 に 対 する 特 段 の 貢 献 が 認 められる 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 加 算 することができる

Microsoft PowerPoint - (セット)150120【資料6】点検結果の記録・データベースの整備_修正02

SNSとLMSの強みと弱み 統合環境を目指して (教育学部紀要投稿用)

2016 年 度 情 報 リテラシー 変 更 された 状 態 同 様 に 価 格 のセルを 書 式 設 定 する 場 合 は 金 額 のセルをすべて 選 択 し [ 書 式 ]のプルダウンメニューか ら[ 会 計 ]を 選 択 する すると が 追 加 され 金 額 としての 書 式 が 設 定 さ

R4財務対応障害一覧

する ( 評 定 の 時 期 ) 第 条 成 績 評 定 の 時 期 は 第 3 次 評 定 者 にあっては 完 成 検 査 及 び 部 分 引 渡 しに 伴 う 検 査 の 時 とし 第 次 評 定 者 及 び 第 次 評 定 者 にあっては 工 事 の 完 成 の 時 とする ( 成 績 評 定

Ver 改 訂 日 付 改 訂 内 容 1

1 総 合 設 計 一 定 規 模 以 上 の 敷 地 面 積 及 び 一 定 割 合 以 上 の 空 地 を 有 する 建 築 計 画 について 特 定 行 政 庁 の 許 可 により 容 積 率 斜 線 制 限 などの 制 限 を 緩 和 する 制 度 である 建 築 敷 地 の 共 同 化 や

<4D F736F F D2095BD90AC E937890C590A789FC90B382CC8EE582C893E09765>

頸 がん 予 防 措 置 の 実 施 の 推 進 のために 講 ずる 具 体 的 な 施 策 等 について 定 めることにより 子 宮 頸 がんの 確 実 な 予 防 を 図 ることを 目 的 とする ( 定 義 ) 第 二 条 この 法 律 において 子 宮 頸 がん 予 防 措 置 とは 子 宮

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

Microsoft Word - 2 答申概要.doc

(3) 善 通 寺 市 の 状 況 善 通 寺 市 においては 固 定 資 産 税 の 納 期 前 前 納 に 対 する 報 奨 金 について 善 通 寺 市 税 条 例 の 規 定 ( 交 付 率 :0.1% 限 度 額 :2 万 円 )に 基 づき 交 付 を 行 っています 参 考 善 通 寺

記者発表資料

(1)1オールゼロ 記 録 ケース 厚 生 年 金 期 間 A B 及 びCに 係 る 旧 厚 生 年 金 保 険 法 の 老 齢 年 金 ( 以 下 旧 厚 老 という )の 受 給 者 に 時 効 特 例 法 施 行 後 厚 生 年 金 期 間 Dが 判 明 した Bは 事 業 所 記 号 が

10【交付要綱】様式第5-1~13

Microsoft Word  要綱.doc

接続試験実施要領【障害者総合支援法(平成27年4月報酬改定)対応】

Transcription:

Ricsin: RubyにCを 埋 め 込 むシステム Ricsin: A System for C Mix-in to Ruby 東 京 学 学 院 情 報 理 学 系 研 究 科 創 造 情 報 学 専 攻 笹 耕 / ささだ こういち sasada@ci.i.u-tokyo.ac.jp 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 1

Agenda 背 景 : 現 状 のRubyとC 拡 張 ライブラリ 提 案 :Ricsin: RubyにCを 埋 め 込 むシステム 従 来 に べ, 書 きやすく, 低 オーバヘッド Ricsin の 利 例 と 処 理 の 流 れ Ricsin の 記 法 Ricsin の 設 計 と 実 装 評 価 と 考 察 関 連 研 究 まとめと 今 後 の 課 題 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 2

Ricsin 記 法 での 記 述 例 def open_fd(path) # Ruby での 記 述 fd = C (%q{ /* C での 記 述 */ return INT2FIX(open(RSTRING_PTR(path), O_RDONLY)); }) raise 'open error' if fd == -1 yield fd ensure raise 'close error' if -1 == C (%q{ /* C での 記 述 */ return INT2FIX(close(FIX2INT(fd))); }) end 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 3

背 景 :Ruby オブジェクト 指 向 スクリプト 語 Ruby 最 新 版 Ruby 処 理 系 Ruby 1.9.1 もっとも 利 されているRuby 処 理 系 200x 年 y リリース 予 定 1.9 からは 仮 想 マシン(VM)を 搭 載 (YARV) C 語 で 実 装 されているので CRuby と 表 記 Eg. JRuby, IronRuby, Rubinius Cで 開 発 されているので,Cで 処 理 を 拡 張 可 能 組 み 込 みクラスやメソッド C 拡 張 ライブラリ( 動 的 リンクライブラリ) 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 4

背 景 :RubyからCの 機 能 を 利 Cでないと 記 述 できない 処 理 システム 依 存 の 処 理,レガシーなライブラリの 利 Ruby 処 理 系 に 踏 み 込 まないと 記 述 できない 処 理 Rubyでは 性 能 でない 処 理 Cで 記 述 したメソッドを 集 めたC 拡 張 ライブラリ Cでメソッドを 記 述 Cメソッド(vs. Rubyメソッド) つまり,Ruby C の 遷 移 は メソッド 単 位 CメソッドからRubyメソッドを 呼 ぶことも 可 能 Ruby C APIを 利 して 記 述 C だけで 考 えるとそれなりに 書 きやすい 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 5

背 景 :C 拡 張 ライブラリの 作 成 と 利 extconf.rb Ruby C APIで Cメソッドを 記 述 Cファイルで 定 義 した Cメソッドを 利 用 するように 記 述 Makefile Cファイル (C) rbファイル (Ruby) C ビルド 環 境 (C compiler, etc) soファイル (C 拡 張 ライブラ)リ 実 行 に 必 要 なファイル CRuby 読 込 実 行 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 6

現 状 のC 拡 張 ライブラリ 作 成 の 問 題 点 1. 記 述 性 の 問 題 :RubyとCをメソッド 単 位 で 分 割 CとRubyでファイル 分 割 が 必 要 メソッドより 細 かい 粒 度 での 処 理 が 記 述 できない 処 理 が 必 要 な 箇 所 に 直 接 記 述 できない 例 外 処 理 やブロック 呼 び 出 しなど,Rubyで 書 いた が 圧 倒 的 に 簡 単 な 処 理 もCで 書 かなければならない 2. 性 能 の 問 題 : 必 ずメソッド 呼 び 出 しが 必 要 必 ずフレーム 成 のオーバヘッドが 必 要 Ruby C の 呼 び 出 し C Ruby の 呼 び 出 し(VM 再 帰.こっちの が 重 い) イテレータを C で 実 装 するとこうなることが 多 い 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 7

Ricsin: RubyにCを 埋 め 込 むシステム 提 案 :RubyにCを 埋 め 込 むシステムRicsin 記 述 性 を 向 上 :Rubyプログラム 中 にCを 記 述 RubyにCプログラム を 直 接 埋 め 込 む 書 式 Rubyのコンテキスト 情 報 をCプログラム から 直 接 参 照 性 能 を 改 善 :VM 命 令 を 新 設 し 呼 び 出 しコスト 削 減 Ruby C の 遷 移 をVM 命 令 / 関 数 呼 び 出 しコストで メソッドの 般 化 が 不 要 で 特 殊 な 決 めうちが 可 能 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 8

Ricsinの 利 例 Cでないと 記 述 できない 処 理 を,Ricsinでは: システム 依 存 の 処 理,レガシーなライブラリの 利 必 要 な 箇 所 に 必 要 な 処 理 を 直 接 Cで 埋 め 込 み Ruby 処 理 系 に 踏 み 込 まないと 記 述 できない 処 理 RubyにRuby C APIを 直 接 埋 め 込 み 例 :Ruby 処 理 系,Ruby C APIのテスト Rubyでは 性 能 でない 処 理 Rubyに 直 接 Cを 埋 め 込 み, 継 続 的 速 化 記 述 性 の さ, 効 率 の 良 さ 相 互 に 影 響 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 9

Ricsinの 全 体 像 rcbファイル (Ruby+C) Ricsin 変 換 器 Makefile Cファイル (C) rbファイル (Ruby) C ビルド 環 境 (C compiler, etc) soファイル (C 拡 張 ライブラ)リ 実 行 に 必 要 なファイル 読 込 実 行 Ricsin 対 応 CRuby 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 10

Ricsin 記 法 Ricsin 記 法 :Ruby + C 混 在 プログラム 記 述 記 法 ファイルの 拡 張 はrcb(rb に c を 埋 め 込 んだ) 完 全 に 有 効 なRubyプログラムとして 設 計 Rubyパーサ, 検 証 器 をそのまま 利 可 能 C などの 特 定 のメソッド 呼 び 出 しを C プログラム 埋 め 込 み 指 として 利 字 列 リテラルでCプログラムを 指 定 埋 め 込 んだCプログラム は 若 変 換 埋 め 込 んだCプログラム 中 からはRubyの 環 境 がそのまま 参 照 可 能 Ruby C APIを 利 したCプログラム 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 11

Ricsin 記 法 での 記 述 例 def open_fd(path) # Ruby での 記 述 fd = C (%q{ /* C での 記 述 */ return INT2FIX(open(RSTRING_PTR(path), O_RDONLY)); }) raise 'open error' if fd == -1 yield fd ensure raise 'close error' if -1 == C (%q{ /* C での 記 述 */ return INT2FIX(close(FIX2INT(fd))); }) end 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 12

Ricsinで 利 するレシーバ C Cプログラム をその 場 に 埋 め 込 み Cdecl 関 数,マクロ,グローバル 変 数 定 義 を 記 述 Cinit ロード 時 に 度 だけ 実 する 処 理 を 記 述 Cb RubyのブロックをCで 記 述 Ccont Cの 中 にRubyを 記 述 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 13

Ccont Cの 中 にRubyを 埋 め 込 み CとRubyを 並 べるための 指 Ccont 便 利 な 省 略 記 法 を 意 ただし,Cの 変 数 スコープは 切 れる Rubyのローカル 変 数 で 値 を 共 有 v = true Ccont ('while (v!= Qnil) {') # (a) v = nil # (b) Ccont (' rb_p(v);') # (c) Ccont ('}') # (d) v = true #C while (v == Qnil) { /* (a) */ v = nil # (b) #C rb_p(v); /* (c) */ #C } /* (d) */ 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 14

コンテキスト 情 報 へのアクセス CからRubyのコンテキスト( 変 数 ) 情 報 へ 直 接 アクセス 可 能 ローカル 変 数 (lv) インスタンス 変 数 (@iv),グローバル 変 数 ($gv) 等 定 数 self 擬 似 変 数 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 15

コンテキスト 情 報 へのアクセス 例 def open_fd(path) # Ruby での 記 述 fd = C (%q{ /* C での 記 述 */ return INT2FIX(open(RSTRING_PTR(path), O_RDONLY)); }) raise 'open error' if fd == -1 yield fd ensure raise 'close error' if -1 == C (%q{ /* C での 記 述 */ return INT2FIX(close(FIX2INT(fd))); }) end 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 16

変 換 と 実 rcb -> C+Rubyに 変 換 rcbファイルをパースして, 埋 め 込 みCを 抽 出 埋 め 込 み 式 をCの 関 数 (*1)に 変 換 変 換 プロセスの 詳 細 は 省 略 実 時, 埋 め 込 み 式 の 実 専 VM 命 令 opt_ricsin_callを 新 設 (VM 唯 の 修 正 点 ) (*1) の 関 数 ポインタを 渡 すようにバイトコードコンパイル Cメソッド 呼 び 出 しからVM 命 令 実 + 関 数 呼 び 出 しに この 命 令 は,VM 命 令 を 拡 張 する 命 令 ということも 可 能 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 17

変 換 と 実 (cont.) # rcb ファイル v = 42 r = C (%q{ /* 埋 め 込 み C ボディ 部 */ rb_p(self); /* main と 表 示 */ return INT2FIX( FIX2INT(v) + 1); }) p r #=> 43 と 表 示 バイトコードコンパイル 生 成 関 数 呼 び 出 し [ADDR] [INSN] [OPERAND] 0000 putobject 42 0002 setlocal v 0004 opt_call_ricsin <funcptr> 0006 setlocal r 0008 putnil 0009 getlocal r 0011 send :p, 1 0017 leave /* 生 成 されるCソースファイルの 一 部 */ #define v (cfp->lfp[3]) #define r (cfp->lfp[2]) VALUE ricsin_func_1( rb_control_frame_t *cfp) { const VALUE self = cfp->self; { /* 埋 め 込 み C ボディ 部 */ rb_p(self); return INT2FIX(FIX2INT(v) + 1); } return Qnil; } #undef v #undef r 拡 張 ライブラリに 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 18

Ccont の 変 換 v = true #C while (v == Qnil) { /* (a) */ v = nil # (b) # rb_p(v); /* (c) */ #C } /* (d) */ [ADDR] [INSN] [OPERAND] 0002 putobject true 0004 setlocal v 0008 opt_call_ricsin <funcptr> 0010 pop 0013 putnil 0014 setlocal v 0018 opt_call_ricsin <funcptr> 0020 leave 生 成 バイトコードコンパイル #define v (cfp->lfp[2]) VALUE ricsin_func_1( rb_control_frame_t *cfp) { switch (GET_PC()) { case 10: goto label_10; case 20: goto label_20; } { label_10:; while (v!= Qnil) {; /* (a) */ SET_PC(10); return Qnil; label_20:; rb_p(v); /* (c) */ }; /* (d) */ SET_PC(25); return Qnil; } } return Qnil; } 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 19

成 されたC 語 ファイルのレイアウト rcb 1 ファイルにつき 1つのCファイルを 成 ( 詳 細 は 割 愛 ) ヘッダファイル 等 Cdecl で 埋 め 込 まれた 定 義 C, Ccont で 埋 め 込 まれた Cプログラム 片 を 変 換 した 関 数 群 実 行 するために 必 要 な データ 定 義 拡 張 ライブラリ 初 期 化 関 数 ( Cinit 含 む) 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 20

評 価 主 に 性 能 に 関 する 評 価 評 価 環 境 評 価 環 境 1:Intel Xeon E5335, Linux 評 価 環 境 2:SPARC T2, SunOS 5.10 傾 向 は 変 わらず.どちらでも 実 できることを すため. 評 価 項 1. Cの 機 能 呼 び 出 しの 実 時 間 較 2. イテレータの 速 化 の 例 3. 列 計 算 の 速 化 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 21

評 価 :Cの 機 能 呼 び 出 しの 実 時 間 較 空 のC 機 能 の 呼 び 出 し 時 間 の 較 空 のCメソッド 空 の C 評 価 環 境 1 (Intel) 評 価 環 境 2 (SPARC) C (sec) Ricsin (sec) C/Ricsin 0.44 0.05 8.8 4.56 0.44 10.4 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 22

評 価 :イテレータの 速 化 の 例 イテレータをRicsinで 書 き 直 し C: 従 来 Ricsin: Ccont を 利 して Ruby/C をミックス Ruby: Rubyで 書 き 直 し 評 価 環 境 1(Intel) 評 価 環 境 2(SPARC) 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 23

評 価 : 列 計 算 の 速 化 列 の 乗 算 ( 要 素 は 整 数 ) 12 のRuby Scriptを36 のCプログラム で 直 接 置 き 換 え 評 価 環 境 1 (Intel) 評 価 環 境 2 (SPARC) Ruby (sec) Ricsin (sec) Ruby/Ricsin 10.57 0.57 20.33 85.31 6.73 12.68 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 24

Ricsinに 関 する 考 察 Cを 埋 め 込 むと 度 な 最 適 化 が 出 来 ないのでは? 最 適 化 が 進 めばそうなるが,その 段 階 は 遠 い Cを 対 象 にしているためポータビリティも い 処 理 系 メンテナンスコストも 低 い 本 当 に 書 きやすいの? 数 であれば 従 来 のCメソッドより 書 きやすい エディタ 等 の 対 応 が 必 要 になるかも 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 25

関 連 研 究 C(とくに gcc)の asm (C + assembler) asm 中 に C は 記 述 不 可 能 HTML 埋 め 込 み 語 (PHP,JSP,JavaScript) Jeannie (OOPSLA 2007) Java+Cコードを 混 在 JavaとJNIコードを 成 Java C,Java Cは メソッド 呼 び 出 しに 変 換 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 26

関 連 研 究 :RubyInline (CメソッドをRubyスクリプトに 記 述 ) rbファイル (Ruby+C) 読 込 実 行 CRuby Cメソッド 定 義 を Rubyスクリプトに 直 接 記 入 Makefile 実 行 時 に 作 成 Cファイル (C) 動 的 読 込 ファイルがバラバラ という 問 題 点 だけ 解 決 C ビルド 環 境 (C compiler, etc) soファイル (C 拡 張 ライブラ)リ 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 27

まとめ RubyにCを 埋 め 込 むRicsinシステムを 提 案 メソッド 単 位 ではなく,Rubyに 直 接 Cを 埋 め 込 む 記 法 コンテキスト 情 報 に 直 接 アクセス 可 能 で 記 述 性 向 上 VMに 命 令 を 追 加 することで10 倍 速 なC 機 能 呼 び 出 し 今 後 の 課 題 C 部 分 を 真 にパースして 連 携 (の 検 討 ) AOTコンパイラとの 連 携 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 28

おわり ご 清 聴 ありがとうございました Ricsin: RubyにCを 埋 め 込 むシステム http://svn.ruby-lang.org/repos/ruby/branches/ricsin/ ささだこういち sasada@ci.i.u-tokyo.ac.jp ko1@atdot.net, ko1@rvm.jp 謝 辞 執 筆 に 協 して 下 さった 々 科 研 費 若 (スタートアップ)19800007 2008/10/28 Ricsin: RubyにCを 埋 め 込 むシステム 29