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

Like this? Share it with your network

Share

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

on

  • 1,612 views

 

Statistics

Views

Total Views
1,612
Views on SlideShare
1,477
Embed Views
135

Actions

Likes
0
Downloads
2
Comments
0

4 Embeds 135

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

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

C83 λカ娘の販促にやってきました Presentation 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