SlideShare a Scribd company logo
C83 λカ娘の販促にやってきました


    Kiwamu Okabe
あんた誰?
☆ Twitter: @master_q
☆ ミラクル・リナックス勤務
☆ 前はコピー機のOSをNetBSDで作ってた
☆ デジタルサイネージのソフト開発してます
☆ OSSに興味のある{エンジニア,インターン}
募集中です!
参照透明な海を守る会メンバーは
λカ娘4巻を今執筆中です。 コミックマーケット
83にて配布予定です。 がむば!
http://www.paraiso-lang.org/ikmsm/books/c83.html
どんな記事になりそう?
ぼくの記事だけさらっと紹介します
記事のはじまり
今の体型 Haskellサイド
-- File: Fib.hs
module Fib where
import Foreign.C.Types

foreign export ccall fib :: CInt -> IO CInt

fibonacci   :: [CInt]
fibonacci   = 1:1:zipWith (+) fibonacci (tail fibonacci)

fib   :: CInt -> IO   CInt
fib   n | 0 <= n &&   n <= 40 = return $ fibonacci !! fromIntegral n
        | otherwise   = return 0
今の体型 C言語サイド
/* File: CMain.c */
#include <stdio.h>
#include "HsFFI.h"
#ifdef __GLASGOW_HASKELL__
#include "Fib_stub.h"
#endif

int main(int argc, char *argv[])
{
        int i;

       hs_init(&argc, &argv);
       for (i = 0; i < 30; i++) {
               printf("%dn", fib(i));
       }
       hs_exit();
       return 0;
}
ダイエット指標1
text/data/bssセクションの合計サイズをダイ
エット
$ make
gcc -I/usr/lib/ghc/include -c CMain.c
/usr/local/ghc7.6.1/bin/ghc -O2 -c Fib.hs
/usr/local/ghc7.6.1/bin/ghc -O2 -no-hs-main CMain.o Fib.o -o FibHs
$ size FibHs
   text    data     bss     dec     hex filename
2784310 290592    47960 3122862 2fa6ae FibHs
ダイエット指標2
実行バイナリがリンクしているライブラリ数をダ
イエット
$ ldd FibHs
  linux-vdso.so.1 => (0x00007fffaefff000)
  libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10
(0x00007f625b0ee000)
  libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f625ae6c000)
  librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1
(0x00007f625ac63000)
  libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
(0x00007f625aa5f000)
  libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1
(0x00007f625a849000)
  libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f625a4be000)
  libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007f625a2a2000)
  /lib64/ld-linux-x86-64.so.2 (0x00007f625b394000)
$ ldd FibHs | wc -l
9
ダイエット指標3
実行バイナリ内の未解決シンボル数をダイエッ
ト
$ nm FibHs
--snip--
0000000000669d8e   t   dlmmap_locked
000000000066a08b   t   dlmunmap
                   U   dlopen@@GLIBC_2.2.5
00000000006698a8   t   dlpvalloc
000000000066978a   t   dlrealloc
                   U   dlsym@@GLIBC_2.2.5
0000000000669877   t   dlvalloc
--snip--
$ nm FibHs | grep -c "U "
175
RTSの中で不要コード削除したよ
☆ セクション合計サイズ(Byte):
3122862 => 3046840
☆ 動的リンクライブラリ数:
9 => 8 (libdl.so.2へのリンク削除)
☆ 未解決シンボル数:
175 => 145
ダイエット作戦はまだまだある!
是非 参照透明な海を守る会ブースへ!
 http://twitcmap.jp/?id=0083-3-YYa-02-a

More Related Content

PDF
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
PDF
百万件くらいのデータの扱い方
PPTX
Wikipedia解析
PDF
Wiki設置するならgitit!
PDF
スタート低レイヤー #0
PDF
RとSQLiteで気軽にデータベース作成
PDF
カウチなやつら CouchDB in the room
PPTX
Realm
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
百万件くらいのデータの扱い方
Wikipedia解析
Wiki設置するならgitit!
スタート低レイヤー #0
RとSQLiteで気軽にデータベース作成
カウチなやつら CouchDB in the room
Realm

What's hot (19)

PDF
R以外の研究ツール
PDF
ファイルの隠し方
PDF
CouchDBをヤラナイカ
PDF
My misstake on Ansible’s lineinfile module
PPTX
コロナ禍の所蔵品検索システム
ODP
Jsonデモの概要
PDF
20131109 ruby conf2013
PDF
What is visor_fs_201207_customize
PDF
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
PDF
Node 学園祭 2012 用
PDF
ET2016展示パネル
PDF
長いの
PDF
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
PDF
Rubyにメソッドを追加して遊ぶ話
PDF
Symfony2からdoctrine mongo db odmを使ってみる
PDF
MongoDBのアレをアレする
PDF
Wikibana - 戦うblogに恋するWiki
PPTX
Casperjsのインストール
PDF
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
R以外の研究ツール
ファイルの隠し方
CouchDBをヤラナイカ
My misstake on Ansible’s lineinfile module
コロナ禍の所蔵品検索システム
Jsonデモの概要
20131109 ruby conf2013
What is visor_fs_201207_customize
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
Node 学園祭 2012 用
ET2016展示パネル
長いの
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
Rubyにメソッドを追加して遊ぶ話
Symfony2からdoctrine mongo db odmを使ってみる
MongoDBのアレをアレする
Wikibana - 戦うblogに恋するWiki
Casperjsのインストール
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
Ad

Similar to C83 λカ娘の販促にやってきました (20)

PDF
Debianを用いたCortex-M3マイコン開発事例のご紹介
PDF
PECL を数えてみた
KEY
Vyatta 改造入門
PDF
アセンブラ漢文
PDF
InfiniBand on Debian
PDF
「Python言語」はじめの一歩 / First step of Python
PDF
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
PDF
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
PDF
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
PDF
golang binary hacks
PDF
Xbyakの紹介とその周辺
PPTX
高速な暗号実装のためにしてきたこと
PDF
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
PDF
C/C++プログラマのための開発ツール
PDF
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
PPT
PDF
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
PPT
081108huge_data.ppt
PPTX
Build Node.js-WASM/WASI Tiny compiler with Node.js
PDF
Metahub for github
Debianを用いたCortex-M3マイコン開発事例のご紹介
PECL を数えてみた
Vyatta 改造入門
アセンブラ漢文
InfiniBand on Debian
「Python言語」はじめの一歩 / First step of Python
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
golang binary hacks
Xbyakの紹介とその周辺
高速な暗号実装のためにしてきたこと
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
C/C++プログラマのための開発ツール
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
081108huge_data.ppt
Build Node.js-WASM/WASI Tiny compiler with Node.js
Metahub for github
Ad

C83 λカ娘の販促にやってきました