Soumettre la recherche
Mettre en ligne
テーマ「最適化 その2」
•
0 j'aime
•
379 vues
T
technocat
Suivre
2010/09/11 @do-speakers#1 愛について語ります。
Lire moins
Lire la suite
Business
Technologie
Signaler
Partager
Signaler
Partager
1 sur 26
Recommandé
テーマ「最適化」
テーマ「最適化」
technocat
Python で munin plugin を書いてみる
Python で munin plugin を書いてみる
ftnk
Subprocess no susume
Subprocess no susume
Makoto Kishimoto
Goをカンストさせる話
Goをカンストさせる話
Moriyoshi Koizumi
板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!
notargs
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本
Kota Mizushima
New text document (2)
New text document (2)
nagavenkat_7
Recommandé
テーマ「最適化」
テーマ「最適化」
technocat
Python で munin plugin を書いてみる
Python で munin plugin を書いてみる
ftnk
Subprocess no susume
Subprocess no susume
Makoto Kishimoto
Goをカンストさせる話
Goをカンストさせる話
Moriyoshi Koizumi
板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!
notargs
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本
Kota Mizushima
New text document (2)
New text document (2)
nagavenkat_7
Prosym2012
Prosym2012
MITSUNARI Shigeo
Effective modern-c++#9
Effective modern-c++#9
Tatsuki SHIMIZU
Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理
wada, kazumi
effective modern c++ chapeter36
effective modern c++ chapeter36
Tatsuki SHIMIZU
Rの高速化
Rの高速化
弘毅 露崎
DTrace for biginners part(2)
DTrace for biginners part(2)
Shoji Haraguchi
HPC Phys-20201203
HPC Phys-20201203
MITSUNARI Shigeo
Wavelet matrix implementation
Wavelet matrix implementation
MITSUNARI Shigeo
Ssaw08 0701
Ssaw08 0701
Atsushi Tadokoro
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
Async design with Unity3D
Async design with Unity3D
Kouji Hosoda
llvm入門
llvm入門
MITSUNARI Shigeo
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
デバドラを書いてみよう!
デバドラを書いてみよう!
Masami Ichikawa
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
emcjp Item 42
emcjp Item 42
MITSUNARI Shigeo
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
LLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
マーク&スイープ勉強会
マーク&スイープ勉強会
7shi
RIMS Update - Best Practices for Roading Asset Managemment
RIMS Update - Best Practices for Roading Asset Managemment
Simon Gough
Google Science Fair Summary
Google Science Fair Summary
Andrew Chen
Contenu connexe
Tendances
Prosym2012
Prosym2012
MITSUNARI Shigeo
Effective modern-c++#9
Effective modern-c++#9
Tatsuki SHIMIZU
Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理
wada, kazumi
effective modern c++ chapeter36
effective modern c++ chapeter36
Tatsuki SHIMIZU
Rの高速化
Rの高速化
弘毅 露崎
DTrace for biginners part(2)
DTrace for biginners part(2)
Shoji Haraguchi
HPC Phys-20201203
HPC Phys-20201203
MITSUNARI Shigeo
Wavelet matrix implementation
Wavelet matrix implementation
MITSUNARI Shigeo
Ssaw08 0701
Ssaw08 0701
Atsushi Tadokoro
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
Async design with Unity3D
Async design with Unity3D
Kouji Hosoda
llvm入門
llvm入門
MITSUNARI Shigeo
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
デバドラを書いてみよう!
デバドラを書いてみよう!
Masami Ichikawa
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
emcjp Item 42
emcjp Item 42
MITSUNARI Shigeo
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
LLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
マーク&スイープ勉強会
マーク&スイープ勉強会
7shi
Tendances
(20)
Prosym2012
Prosym2012
Effective modern-c++#9
Effective modern-c++#9
Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理
effective modern c++ chapeter36
effective modern c++ chapeter36
Rの高速化
Rの高速化
DTrace for biginners part(2)
DTrace for biginners part(2)
HPC Phys-20201203
HPC Phys-20201203
Wavelet matrix implementation
Wavelet matrix implementation
Ssaw08 0701
Ssaw08 0701
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Async design with Unity3D
Async design with Unity3D
llvm入門
llvm入門
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
デバドラを書いてみよう!
デバドラを書いてみよう!
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
emcjp Item 42
emcjp Item 42
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
LLVM最適化のこつ
LLVM最適化のこつ
マーク&スイープ勉強会
マーク&スイープ勉強会
En vedette
RIMS Update - Best Practices for Roading Asset Managemment
RIMS Update - Best Practices for Roading Asset Managemment
Simon Gough
Google Science Fair Summary
Google Science Fair Summary
Andrew Chen
Creating Email Campaigns that Work: A Focus on Design Elements
Creating Email Campaigns that Work: A Focus on Design Elements
Email on Acid
November 12 : (Education)
November 12 : (Education)
AIMEC Reporter
SharePoint Saturday Houston: SharePoint 2010 Performance
SharePoint Saturday Houston: SharePoint 2010 Performance
Brian Culver
Emerging technologies in_adult_education_classroombl (2)
Emerging technologies in_adult_education_classroombl (2)
Nell Eckersley
Ppt ch12 marien_4_e-205401
Ppt ch12 marien_4_e-205401
Alexa Wheeler, University of New Mexico Valencia
Mis deberes y derechos como aprendiz sena
Mis deberes y derechos como aprendiz sena
majo980319
NGN Company Profile November08
NGN Company Profile November08
Serdar Salepcioglu
Catálogo xpress - Equinos
Catálogo xpress - Equinos
Agrovet Market Animal Health
Microfiber goods
Microfiber goods
Christy andy
UIMP: Sistema Multiagente CBR para Turismo de Salamanca
UIMP: Sistema Multiagente CBR para Turismo de Salamanca
Gerardo DeMiguel
Future of Composite Apps S-Controls and Beyond
Future of Composite Apps S-Controls and Beyond
dreamforce2006
Data table for falling steel
Data table for falling steel
Ciyyu Kudu
Taller de autoestima. gestalt branden
Taller de autoestima. gestalt branden
Giovanny Sanchez
China placi de circuit imprimat preţul de listă
China placi de circuit imprimat preţul de listă
grace cheng
En vedette
(16)
RIMS Update - Best Practices for Roading Asset Managemment
RIMS Update - Best Practices for Roading Asset Managemment
Google Science Fair Summary
Google Science Fair Summary
Creating Email Campaigns that Work: A Focus on Design Elements
Creating Email Campaigns that Work: A Focus on Design Elements
November 12 : (Education)
November 12 : (Education)
SharePoint Saturday Houston: SharePoint 2010 Performance
SharePoint Saturday Houston: SharePoint 2010 Performance
Emerging technologies in_adult_education_classroombl (2)
Emerging technologies in_adult_education_classroombl (2)
Ppt ch12 marien_4_e-205401
Ppt ch12 marien_4_e-205401
Mis deberes y derechos como aprendiz sena
Mis deberes y derechos como aprendiz sena
NGN Company Profile November08
NGN Company Profile November08
Catálogo xpress - Equinos
Catálogo xpress - Equinos
Microfiber goods
Microfiber goods
UIMP: Sistema Multiagente CBR para Turismo de Salamanca
UIMP: Sistema Multiagente CBR para Turismo de Salamanca
Future of Composite Apps S-Controls and Beyond
Future of Composite Apps S-Controls and Beyond
Data table for falling steel
Data table for falling steel
Taller de autoestima. gestalt branden
Taller de autoestima. gestalt branden
China placi de circuit imprimat preţul de listă
China placi de circuit imprimat preţul de listă
Similaire à テーマ「最適化 その2」
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js
Yoshiiro Ueno
Slide
Slide
Takefumi MIYOSHI
Fftw誰得ガイド
Fftw誰得ガイド
chunjp
Bluespec @waseda(PDF)
Bluespec @waseda(PDF)
Takefumi MIYOSHI
Spmv9forpublic
Spmv9forpublic
T2C_
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
Takeshi Arabiki
0x300
0x300
geek_alice
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
フラグを愛でる
フラグを愛でる
MITSUNARI Shigeo
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
Fixstars Corporation
Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
hecomi
文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...
文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...
Toru Tamaki
これからのコンピューティングとJava(Hacker Tackle)
これからのコンピューティングとJava(Hacker Tackle)
なおき きしだ
Altanative macro
Altanative macro
Motohiro KOSAKI
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
Material
Material
_TUNE_
X hago2 shortcoding 20110827
X hago2 shortcoding 20110827
uskey512
Similaire à テーマ「最適化 その2」
(20)
x86とコンテキストスイッチ
x86とコンテキストスイッチ
並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js
Slide
Slide
Fftw誰得ガイド
Fftw誰得ガイド
Bluespec @waseda(PDF)
Bluespec @waseda(PDF)
Spmv9forpublic
Spmv9forpublic
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
0x300
0x300
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
フラグを愛でる
フラグを愛でる
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
Clojure programming-chapter-2
Clojure programming-chapter-2
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...
文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...
これからのコンピューティングとJava(Hacker Tackle)
これからのコンピューティングとJava(Hacker Tackle)
Altanative macro
Altanative macro
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
Material
Material
X hago2 shortcoding 20110827
X hago2 shortcoding 20110827
Plus de technocat
GUIアプリに必要な3つのこと
GUIアプリに必要な3つのこと
technocat
perl meets beats.
perl meets beats.
technocat
画像を縮小するお話
画像を縮小するお話
technocat
テーマ「perl meets beats」
テーマ「perl meets beats」
technocat
記念撮影で気を付けるべき 4 つのこと
記念撮影で気を付けるべき 4 つのこと
technocat
テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」
technocat
テーマ「Hokkaido.pmからのお知らせ」
テーマ「Hokkaido.pmからのお知らせ」
technocat
Plus de technocat
(7)
GUIアプリに必要な3つのこと
GUIアプリに必要な3つのこと
perl meets beats.
perl meets beats.
画像を縮小するお話
画像を縮小するお話
テーマ「perl meets beats」
テーマ「perl meets beats」
記念撮影で気を付けるべき 4 つのこと
記念撮影で気を付けるべき 4 つのこと
テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」
テーマ「Hokkaido.pmからのお知らせ」
テーマ「Hokkaido.pmからのお知らせ」
Dernier
Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
Yasuyoshi Minehisa
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
masakisaito12
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ 株式会社
20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf
ssuser80a51f
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
ユニパー株式会社
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
KayaSuetake1
Dernier
(6)
Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
テーマ「最適化 その2」
1.
ライトニングトーク
2.
自己紹介 twitter: techno_neko 所属:Hokkaido.pm 仕事:組み込み系
3.
テーマ「最適化」 We love optimize!
4.
前回までのあらすじ カラー画像をモノクロに変換する perl スクリプトの処理時間を 約 40%
まで短縮したところ、 思わぬところからアドバイスと リクエストを頂いたのであった。
5.
お題 「カラー画像をモノクロに変換」 変換!
6.
モノクロに変換 カラー画像 モノクロ画像 ・ ・ ・ ・ ・ ・ Y =
0.29*R + 0.59*G + 0.11*B (※係数は、輝度を求める一般的な値) 0x004E4E4E 0x004E4E4E 0x12345678 0x004E4E4E 0x12345678 0x12345678
7.
実行環境 Mac OS X
10.6.4 CPU Intel Core 2 Duo 2.4 GHz メモリ 4GB 800MHz DDR2 SDRAM perl 5.12.1 テストデータ 6M pixel ( 3008 x 2000 ) 32bit format
8.
モノクロに変換 sub test1 { #
Y = 0.29*R + 0.59*G + 0.11*B my @factor = ( 0.30, 0.59, 0.11 ); my @argb_test = @argb_src; for (my $i=0; $i<scalar(@argb_test); $i++) { my $argb = $argb_test[$i]; # ARGB my $r = ( ($argb >> 16) & 0xFF ); my $g = ( ($argb >> 8) & 0xFF ); my $b = ( ($argb >> 0) & 0xFF ); my $y = int( ($r * $factor[0]) + ($g * $factor[1]) + ($b * $factor[2]) ); $argb_test[$i] = ( ($y << 16) + ($y << 8) + $y ); } push @argb_dst, @argb_test; }
9.
モノクロに変換 TEST1: 24 wallclock
secs (24.00 usr + 0.13 sys = 24.13 CPU) @ 0.04/s (n=1) これが基準タイム
10.
モノクロに変換 〜 前回の最速 map の中を 1
行にまとめてみた # Y = 0.29*R + 0.59*G + 0.11*B my $fr = 0.30 / (1 << 16); my $fg = 0.59 / (1 << 8); my $fb = 0.11 / (1 << 0); my @argb_test = map { 0x010101 * int( (($_ & 0xFF0000) * $fr) + (($_ & 0x00FF00) * $fg) + (($_ & 0x0000FF) * $fb) ); } @argb_src;
11.
モノクロに変換 〜 前回の最速 約 234% 高速化! TEST7:
11 wallclock secs (10.04 usr + 0.28 sys = 10.32 CPU) @ 0.10/s (n=1) TEST1: 24 wallclock secs (24.00 usr + 0.13 sys = 24.13 CPU) @ 0.04/s (n=1)
12.
use integer; を手に入れた! (すべてはここから始まった・・・)
13.
モノクロに変換 〜 その1 use integer; # Y
= 0.29*R + 0.59*G + 0.11*B my $fr = (30 * 256) / 100; my $fg = (59 * 256) / 100; my $fb = 256 - $fr - $fg; #(11 * 256) / 100; my @argb_test = map { 0x010101 * ( ( ( (($_ >> 16) & 0xFF) * $fr ) + ( (($_ >> 8) & 0xFF) * $fg ) + ( (($_ >> 0) & 0xFF) * $fb ) ) >> 8 ); } @argb_src;
14.
モノクロに変換 〜 その1 約 269% 高速化! TEST8:
9 wallclock secs ( 8.88 usr + 0.10 sys = 8.98 CPU) @ 0.11/s (n=1) TEST1: 24 wallclock secs (24.00 usr + 0.13 sys = 24.13 CPU) @ 0.04/s (n=1)
15.
モノクロに変換 〜 その2 use integer; # Y
= 0.29*R + 0.59*G + 0.11*B my $fr = (30 * 256) / 100; my $fg = (59 * 256) / 100; my $fb = 256 - $fr - $fg; #(11 * 256) / 100; $fb <<= 8; # only B my @argb_test = map { 0x010101 * ( ( ( (($_ >> 8) & 0xFF00) * $fr ) + ( ( $_ & 0xFF00) * $fg ) + ( ( $_ & 0x00FF) * $fb ) # $fb is already "<< 8" ) >> 16 ); } @argb_src;
16.
モノクロに変換 〜 その2 約 317% 削減! TEST9:
7 wallclock secs ( 7.52 usr + 0.10 sys = 7.62 CPU) @ 0.13/s (n=1) TEST1: 24 wallclock secs (24.00 usr + 0.13 sys = 24.13 CPU) @ 0.04/s (n=1)
17.
モノクロに変換 〜 最終章 use integer; # Y
= 0.29*R + 0.59*G + 0.11*B my $fr = (30 * 128) / 100; my $fg = (59 * 128) / 100; my $fb = 128 - $fr - $fg; #(11 * 128) / 100; $fg <<= 8; $fb <<= 16; my @argb_test = map { 0x010101 * ( ( ( ( $_ & 0xFF0000) * $fr ) + ( ( $_ & 0x00FF00) * $fg ) + ( ( $_ & 0x0000FF) * $fb ) ) >> 23 #(24 - 1) ); } @argb_src;
18.
モノクロに変換 〜 最終章 約 355% 高速化! TESTA:
7 wallclock secs ( 6.69 usr + 0.11 sys = 6.80 CPU) @ 0.15/s (n=1) TEST1: 24 wallclock secs (24.00 usr + 0.13 sys = 24.13 CPU) @ 0.04/s (n=1)
19.
まとめ
20.
まとめ ・最適化とはロマン
21.
まとめ ・最適化とはロマン ・自分との戦い
22.
まとめ ・最適化とはロマン ・自分との戦い ・危険を伴う
23.
故に、 常に問い続けなければ ならない。 それは・・・、
24.
「そこに愛はあるのかい?」
25.
愛が止まらない ;)
26.
ご清聴、ありがとうございました。