Submit Search
Upload
Aniki::Internal
•
0 likes
•
8,037 views
karupanerura
Follow
Okinawa.pm #5
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 18
Download now
Download to read offline
Recommended
The plan of Aniki 2.0
The plan of Aniki 2.0
karupanerura
コンテキストと仲良く
コンテキストと仲良く
karupanerura
20191030 RPA makes us Anything.
20191030 RPA makes us Anything.
riscurred
Functional Programming in Scala #4-1
Functional Programming in Scala #4-1
Yoshihiro Shimizu
サイタマッパー活動報告2015
サイタマッパー活動報告2015
Kazuho Ohta
Perl5 on Perl6
Perl5 on Perl6
まさあき さいとう
Lチカ入門の準備 おっさん達が好きなことを話す会
Lチカ入門の準備 おっさん達が好きなことを話す会
Tsutomu Sakaguchi
取り柄のないボクがGinza.rb、社内勉強会、技術書典の出展とか、なんでやってるんだっけ?
取り柄のないボクがGinza.rb、社内勉強会、技術書典の出展とか、なんでやってるんだっけ?
Ken-ichi Kudo
Recommended
The plan of Aniki 2.0
The plan of Aniki 2.0
karupanerura
コンテキストと仲良く
コンテキストと仲良く
karupanerura
20191030 RPA makes us Anything.
20191030 RPA makes us Anything.
riscurred
Functional Programming in Scala #4-1
Functional Programming in Scala #4-1
Yoshihiro Shimizu
サイタマッパー活動報告2015
サイタマッパー活動報告2015
Kazuho Ohta
Perl5 on Perl6
Perl5 on Perl6
まさあき さいとう
Lチカ入門の準備 おっさん達が好きなことを話す会
Lチカ入門の準備 おっさん達が好きなことを話す会
Tsutomu Sakaguchi
取り柄のないボクがGinza.rb、社内勉強会、技術書典の出展とか、なんでやってるんだっけ?
取り柄のないボクがGinza.rb、社内勉強会、技術書典の出展とか、なんでやってるんだっけ?
Ken-ichi Kudo
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
Nishida Kansuke
Rails5β + herokuで遊んでみた
Rails5β + herokuで遊んでみた
shota miyazaki
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Hideyuki TAKEI
2016 03 05_yokohama_north
2016 03 05_yokohama_north
Ryo Tomidokoro
RubyとRailsのおいしい使い方 ver. okayama1
RubyとRailsのおいしい使い方 ver. okayama1
Satomi Tsujita
Javaから見たRubyの世界
Javaから見たRubyの世界
Takafumi Yoshida
Aniki has come
Aniki has come
karupanerura
Optimize perl5 code for perfomance freaks
Optimize perl5 code for perfomance freaks
karupanerura
DateTimeX::Moment
DateTimeX::Moment
karupanerura
The Crystal language *recently* update
The Crystal language *recently* update
karupanerura
router-simple.cr
router-simple.cr
karupanerura
TIme::Moment+Time::Strptime=
TIme::Moment+Time::Strptime=
karupanerura
Yapc fukuoka crust
Yapc fukuoka crust
Tokuhiro Matsuno
Testing in Sinatra
Testing in Sinatra
Uchio Kondo
PerlのTwitterモジュールの紹介 #twtr_hack
PerlのTwitterモジュールの紹介 #twtr_hack
鉄次 尾形
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
Aniki - The ORM as our great brother.
Aniki - The ORM as our great brother.
karupanerura
Gotanda.pmの紹介
Gotanda.pmの紹介
karupanerura
Project Sumatra - JavaOne2012報告会 #j1rep
Project Sumatra - JavaOne2012報告会 #j1rep
Yuji Kubota
openpear の紹介
openpear の紹介
Keisuke SATO
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
Ryutaro YOSHIBA
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
Developers Summit
More Related Content
What's hot
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
Nishida Kansuke
Rails5β + herokuで遊んでみた
Rails5β + herokuで遊んでみた
shota miyazaki
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Hideyuki TAKEI
2016 03 05_yokohama_north
2016 03 05_yokohama_north
Ryo Tomidokoro
RubyとRailsのおいしい使い方 ver. okayama1
RubyとRailsのおいしい使い方 ver. okayama1
Satomi Tsujita
Javaから見たRubyの世界
Javaから見たRubyの世界
Takafumi Yoshida
What's hot
(6)
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
Rails5β + herokuで遊んでみた
Rails5β + herokuで遊んでみた
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
2016 03 05_yokohama_north
2016 03 05_yokohama_north
RubyとRailsのおいしい使い方 ver. okayama1
RubyとRailsのおいしい使い方 ver. okayama1
Javaから見たRubyの世界
Javaから見たRubyの世界
Viewers also liked
Aniki has come
Aniki has come
karupanerura
Optimize perl5 code for perfomance freaks
Optimize perl5 code for perfomance freaks
karupanerura
DateTimeX::Moment
DateTimeX::Moment
karupanerura
The Crystal language *recently* update
The Crystal language *recently* update
karupanerura
router-simple.cr
router-simple.cr
karupanerura
TIme::Moment+Time::Strptime=
TIme::Moment+Time::Strptime=
karupanerura
Viewers also liked
(6)
Aniki has come
Aniki has come
Optimize perl5 code for perfomance freaks
Optimize perl5 code for perfomance freaks
DateTimeX::Moment
DateTimeX::Moment
The Crystal language *recently* update
The Crystal language *recently* update
router-simple.cr
router-simple.cr
TIme::Moment+Time::Strptime=
TIme::Moment+Time::Strptime=
Similar to Aniki::Internal
Yapc fukuoka crust
Yapc fukuoka crust
Tokuhiro Matsuno
Testing in Sinatra
Testing in Sinatra
Uchio Kondo
PerlのTwitterモジュールの紹介 #twtr_hack
PerlのTwitterモジュールの紹介 #twtr_hack
鉄次 尾形
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
Aniki - The ORM as our great brother.
Aniki - The ORM as our great brother.
karupanerura
Gotanda.pmの紹介
Gotanda.pmの紹介
karupanerura
Project Sumatra - JavaOne2012報告会 #j1rep
Project Sumatra - JavaOne2012報告会 #j1rep
Yuji Kubota
openpear の紹介
openpear の紹介
Keisuke SATO
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
Ryutaro YOSHIBA
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
Developers Summit
Proof Summit 2012
Proof Summit 2012
Sosuke MORIGUCHI
GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04
Shinobu Okano
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話
kanorimon
libpgenでパケット操作
libpgenでパケット操作
slankdev
( (0) / (0)) ☆祝☆ (nari_ex) LT at Cloud Server Festa 2013 Autumn「サバフェス!」
( (0) / (0)) ☆祝☆ (nari_ex) LT at Cloud Server Festa 2013 Autumn「サバフェス!」
Narimichi Takamura
私は如何にしてUpl
私は如何にしてUpl
Tohru Shinohara
Scala Matsuri 2016コミュニティセッション
Scala Matsuri 2016コミュニティセッション
Yoshiteru Takeshita
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)
Junichi Ito
anything-php-funcref-perl.el
anything-php-funcref-perl.el
Kenichirou Oyama
JavaOne2014参加報告LT
JavaOne2014参加報告LT
諭 岡野
Similar to Aniki::Internal
(20)
Yapc fukuoka crust
Yapc fukuoka crust
Testing in Sinatra
Testing in Sinatra
PerlのTwitterモジュールの紹介 #twtr_hack
PerlのTwitterモジュールの紹介 #twtr_hack
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
Aniki - The ORM as our great brother.
Aniki - The ORM as our great brother.
Gotanda.pmの紹介
Gotanda.pmの紹介
Project Sumatra - JavaOne2012報告会 #j1rep
Project Sumatra - JavaOne2012報告会 #j1rep
openpear の紹介
openpear の紹介
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
Proof Summit 2012
Proof Summit 2012
GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話
libpgenでパケット操作
libpgenでパケット操作
( (0) / (0)) ☆祝☆ (nari_ex) LT at Cloud Server Festa 2013 Autumn「サバフェス!」
( (0) / (0)) ☆祝☆ (nari_ex) LT at Cloud Server Festa 2013 Autumn「サバフェス!」
私は如何にしてUpl
私は如何にしてUpl
Scala Matsuri 2016コミュニティセッション
Scala Matsuri 2016コミュニティセッション
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)
なぜ私はソニックガーデンのプログラマに転身できたのか?(Short ver.)
anything-php-funcref-perl.el
anything-php-funcref-perl.el
JavaOne2014参加報告LT
JavaOne2014参加報告LT
More from karupanerura
Perl5 VS JSON
Perl5 VS JSON
karupanerura
KOWAZA for mackerel
KOWAZA for mackerel
karupanerura
Technology for reduce of mistakes - うっかりをなくす技術
Technology for reduce of mistakes - うっかりをなくす技術
karupanerura
Why we use mruby with Perl5?
Why we use mruby with Perl5?
karupanerura
はかたの塩
はかたの塩
karupanerura
すいすいSwift
すいすいSwift
karupanerura
Perlにおけるclass実装パターン
Perlにおけるclass実装パターン
karupanerura
モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤
karupanerura
Perl5 meta programming
Perl5 meta programming
karupanerura
mysqlcasual6-next-key-lock
mysqlcasual6-next-key-lock
karupanerura
dwangocpp1-lt
dwangocpp1-lt
karupanerura
engineer-life
engineer-life
karupanerura
若手Itエンジニア飲み会-LT
若手Itエンジニア飲み会-LT
karupanerura
Hachioji.pm #40
Hachioji.pm #40
karupanerura
Hachioji.pm #39
Hachioji.pm #39
karupanerura
perl5の日付時刻処理とか
perl5の日付時刻処理とか
karupanerura
Yapc asia-2012-lt-thon
Yapc asia-2012-lt-thon
karupanerura
ぼくがかんがえたさいきょうのMvc
ぼくがかんがえたさいきょうのMvc
karupanerura
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
karupanerura
Teng tips
Teng tips
karupanerura
More from karupanerura
(20)
Perl5 VS JSON
Perl5 VS JSON
KOWAZA for mackerel
KOWAZA for mackerel
Technology for reduce of mistakes - うっかりをなくす技術
Technology for reduce of mistakes - うっかりをなくす技術
Why we use mruby with Perl5?
Why we use mruby with Perl5?
はかたの塩
はかたの塩
すいすいSwift
すいすいSwift
Perlにおけるclass実装パターン
Perlにおけるclass実装パターン
モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤
Perl5 meta programming
Perl5 meta programming
mysqlcasual6-next-key-lock
mysqlcasual6-next-key-lock
dwangocpp1-lt
dwangocpp1-lt
engineer-life
engineer-life
若手Itエンジニア飲み会-LT
若手Itエンジニア飲み会-LT
Hachioji.pm #40
Hachioji.pm #40
Hachioji.pm #39
Hachioji.pm #39
perl5の日付時刻処理とか
perl5の日付時刻処理とか
Yapc asia-2012-lt-thon
Yapc asia-2012-lt-thon
ぼくがかんがえたさいきょうのMvc
ぼくがかんがえたさいきょうのMvc
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Teng tips
Teng tips
Aniki::Internal
1.
Aniki::Internal id:karupanerura Okinawa.pm #5
2.
だれ • id:karupanerura (Twitter/Hatena/Github) •
Japan Perl Association / DeNA • Perl/XS/Go/Crystal/Swift/Java/etc.. • CPAN Author • Gotanda.pm / Mackerel UG Organizer
3.
はじめに • このトークでは一般的なORMの実装と対比し てAnikiの実装について語ります • スライドでは大まかな概要だけ説明します •
コードリーディングが中心なのでよくわから ないなと思ったら積極的にdan the interraptionをお願いします
4.
あじぇんだ • Anikiとは • パフォーマンス向上のためのtips •
ソースコードを追う • まとめ
5.
Anikiとは YAPC::Hokkaido 2016 Sapporo https://speakerdeck.com/karupanerura/lai-rigaifalsearuorm-aniki-che-di-jie-shuo
6.
パフォーマンス向上のための tips
7.
パフォーマンスを阻害するもの • 実行される回数が多い処理 • 複雑な処理 •
外部要因に依存する処理
8.
実行される回数が多い処理 • ライブラリ機能そのものの呼び出しも含む • 少なくとも
O(n) になる • 1回で良い処理は1回だけにしたいところ • とはいえ過度な最適化は可読性を損ねる
9.
複雑な処理 • 一般的に計算量の多い処理 • アルゴリズムやデータ構造を工夫して計算量 を減らそう •
ソフトウェアエンジニアリングの基礎大事 • XSというかCつよい人はメモリアクセスやア ロケーションの最適化まで考えるとよいやも
10.
外部要因に依存する処理 • I/Oやロックなど • 慣れていないと見落としがち •
モジュールの動的ロードなども • ただし、PerlのORMという文脈だと現状では あまり見る意味がない
11.
Aniki開発時の課題 • 外部ライブラリにがっつり依存することを決 めていた • 外部ライブラリは計算量がわからない •
インターフェースは同じでも実装は変わる • よく参照されるメソッドの結果をキャッシュ したい(キャッシュして良いものは)
12.
SQL::Translator::Schema • SQL::TranslatorのSchemaクラス • Schemaのメタオブジェクトとして利用 •
get_table/get_fieldsなどが割と遅い • 独自クラスから移譲しつつキャッシュしよう • Aniki::Schema 爆誕!
13.
Aniki->setup • 設定や動作条件の違いを吸収 • 最適化したメソッドをセットアップ •
Schemaのwrapやlast_insert_idなど • row classなども
14.
$aniki->select • prepare_cachedがデフォルト • クエリの順序を標準化 •
Aniki::QueryBuilder::Canonical • キャッシュヒット率向上 • クエリキャッシュにも優しい
15.
実際に ソースを みていきましょう
16.
Githubにあります https://github.com/karupanerura/Aniki 読んでいきましょう
17.
まとめ
18.
まとめ • Anikiはいろいろ実装工夫してます • つかってくれるとうれしい
Download now