0
C83 λカ娘の販促にやってきました    Kiwamu Okabe
あんた誰?☆ Twitter: @master_q☆ ミラクル・リナックス勤務☆ 前はコピー機のOSをNetBSDで作ってた☆ デジタルサイネージのソフト開発してます☆ OSSに興味のある{エンジニア,インターン}募集中です!
参照透明な海を守る会メンバーはλカ娘4巻を今執筆中です。 コミックマーケット83にて配布予定です。 がむば!http://www.paraiso-lang.org/ikmsm/books/c83.html
どんな記事になりそう?ぼくの記事だけさらっと紹介します
記事のはじまり
今の体型 Haskellサイド-- File: Fib.hsmodule Fib whereimport Foreign.C.Typesforeign export ccall fib :: CInt -> IO CIntfibonacci  ...
今の体型 C言語サイド/* File: CMain.c */#include <stdio.h>#include "HsFFI.h"#ifdef __GLASGOW_HASKELL__#include "Fib_stub.h"#endifint...
ダイエット指標1text/data/bssセクションの合計サイズをダイエット$ makegcc -I/usr/lib/ghc/include -c CMain.c/usr/local/ghc7.6.1/bin/ghc -O2 -c Fib.hs...
ダイエット指標2実行バイナリがリンクしているライブラリ数をダイエット$ ldd FibHs  linux-vdso.so.1 => (0x00007fffaefff000)  libgmp.so.10 => /usr/lib/x86_64-li...
ダイエット指標3実行バイナリ内の未解決シンボル数をダイエット$ nm FibHs--snip--0000000000669d8e   t   dlmmap_locked000000000066a08b   t   dlmunmap       ...
RTSの中で不要コード削除したよ☆ セクション合計サイズ(Byte):3122862 => 3046840☆ 動的リンクライブラリ数:9 => 8 (libdl.so.2へのリンク削除)☆ 未解決シンボル数:175 => 145
ダイエット作戦はまだまだある!
是非 参照透明な海を守る会ブースへ! http://twitcmap.jp/?id=0083-3-YYa-02-a
Upcoming SlideShare
Loading in...5
×

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

1,277

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,277
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. C83 λカ娘の販促にやってきました Kiwamu Okabe
  2. 2. あんた誰?☆ Twitter: @master_q☆ ミラクル・リナックス勤務☆ 前はコピー機のOSをNetBSDで作ってた☆ デジタルサイネージのソフト開発してます☆ OSSに興味のある{エンジニア,インターン}募集中です!
  3. 3. 参照透明な海を守る会メンバーはλカ娘4巻を今執筆中です。 コミックマーケット83にて配布予定です。 がむば!http://www.paraiso-lang.org/ikmsm/books/c83.html
  4. 4. どんな記事になりそう?ぼくの記事だけさらっと紹介します
  5. 5. 記事のはじまり
  6. 6. 今の体型 Haskellサイド-- File: Fib.hsmodule Fib whereimport Foreign.C.Typesforeign export ccall fib :: CInt -> IO CIntfibonacci :: [CInt]fibonacci = 1:1:zipWith (+) fibonacci (tail fibonacci)fib :: CInt -> IO CIntfib n | 0 <= n && n <= 40 = return $ fibonacci !! fromIntegral n | otherwise = return 0
  7. 7. 今の体型 C言語サイド/* File: CMain.c */#include <stdio.h>#include "HsFFI.h"#ifdef __GLASGOW_HASKELL__#include "Fib_stub.h"#endifint 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;}
  8. 8. ダイエット指標1text/data/bssセクションの合計サイズをダイエット$ makegcc -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 filename2784310 290592 47960 3122862 2fa6ae FibHs
  9. 9. ダイエット指標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 -l9
  10. 10. ダイエット指標3実行バイナリ内の未解決シンボル数をダイエット$ nm FibHs--snip--0000000000669d8e t dlmmap_locked000000000066a08b t dlmunmap U dlopen@@GLIBC_2.2.500000000006698a8 t dlpvalloc000000000066978a t dlrealloc U dlsym@@GLIBC_2.2.50000000000669877 t dlvalloc--snip--$ nm FibHs | grep -c "U "175
  11. 11. RTSの中で不要コード削除したよ☆ セクション合計サイズ(Byte):3122862 => 3046840☆ 動的リンクライブラリ数:9 => 8 (libdl.so.2へのリンク削除)☆ 未解決シンボル数:175 => 145
  12. 12. ダイエット作戦はまだまだある!
  13. 13. 是非 参照透明な海を守る会ブースへ! http://twitcmap.jp/?id=0083-3-YYa-02-a
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×