C83 λカ娘の販促にやってきました
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 1,652 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,652
On Slideshare
1,515
From Embeds
137
Number of Embeds
4

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 137

http://makopi23.blog.fc2.com 91
http://control.blog.fc2.com 35
https://twitter.com 10
http://cache.yahoofs.jp 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. C83 λカ娘の販促にやってきました Kiwamu Okabe
  • 2. あんた誰?☆ Twitter: @master_q☆ ミラクル・リナックス勤務☆ 前はコピー機のOSをNetBSDで作ってた☆ デジタルサイネージのソフト開発してます☆ OSSに興味のある{エンジニア,インターン}募集中です!
  • 3. 参照透明な海を守る会メンバーはλカ娘4巻を今執筆中です。 コミックマーケット83にて配布予定です。 がむば!http://www.paraiso-lang.org/ikmsm/books/c83.html
  • 4. どんな記事になりそう?ぼくの記事だけさらっと紹介します
  • 5. 記事のはじまり
  • 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. 今の体型 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. ダイエット指標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. ダイエット指標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. ダイエット指標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. RTSの中で不要コード削除したよ☆ セクション合計サイズ(Byte):3122862 => 3046840☆ 動的リンクライブラリ数:9 => 8 (libdl.so.2へのリンク削除)☆ 未解決シンボル数:175 => 145
  • 12. ダイエット作戦はまだまだある!
  • 13. 是非 参照透明な海を守る会ブースへ! http://twitcmap.jp/?id=0083-3-YYa-02-a