タグ

rubyとCに関するzetamattaのブックマーク (8)

  • mrubyを小さくしたり大きくしたりした話 - スペクトラム

    最近mrubyにコミットしているので自分の活動をまとめます。 mrubyを小さくした話 mrubyでは、文字列の扱いはシンプルにchar*を構造体でラップしていました。 struct RString { MRB_OBJECT_HEADER; mrb_int len; union { mrb_int capa; struct mrb_shared_string *shared; } aux; char *ptr; }; そのため1つの文字列毎に、構造体分と文字列分の2回のmalloc/freeが発生していました。 ここでCRubyのRStringを見てみます。 #define RSTRING_EMBED_LEN_MAX ((int)((sizeof(VALUE)*3)/sizeof(char)-1)) struct RString { struct RBasic basic; union {

    mrubyを小さくしたり大きくしたりした話 - スペクトラム
    zetamatta
    zetamatta 2014/03/15
    あー、構造体の末尾に char[1]を付けるテクニック、「Embed-String」って呼べばいいのか
  • 言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー

    Twitterのタイムラインが面白すぎて、ついうっかり言語を擬人化して脳内で言語女子会なるものを開いてしまいました。なお、登場人物と実在の人物は1対1に対応しません。 undefinedとnullの両方必要なの? とあるプログラミング言語が集う女子会にて: Perl: そういえばさ、なんでJavaScriptちゃんってundefinedとnullの両方もってるの? JavaScript: えっ、未定義の変数にアクセスした時undefined返したいじゃない? Python: 例外投げて死ねばいいじゃん Ruby: 例外投げて死ねばいいよね Python & Ruby: ねー♡ Java: いやそこは参照型ならnull、数値型なら0で初期化すべきでしょ C: これだから最近の若い子は…初期化にだってコストが掛かるんだからね!デフォルトで初期化するなんて無駄遣いよ!必要な人だけが責任をもって初

    言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー
    zetamatta
    zetamatta 2012/03/17
    様々な言語の「変数未定義」「空リストからのpop」「存在しないキーへのアクセス」した時の値
  • はてなブログ | 無料ブログを作成しよう

    引越し遍歴パートⅡ 2018年に「上京して10年で引越しを6回した」というブログを書いた。 月日は流れ、あれから6年…さらに2回の引越しをした。ホテル暮らしも含めると3回かもしれない。 前回の記事では主に神奈川〜千葉〜東京の引越し事情を書いた。関東の浅瀬でちゃぷちゃぷ遊んでいたに過…

    はてなブログ | 無料ブログを作成しよう
  • Big Sky :: コマンドラインでC言語をワンライナー出来る「C」をWindowsにポーティングした。

    最近、kazuhoさんが作った「C」で遊んでいるのですが(いまごろかい!)、これWindowsでも使いたいなーなんて思ったのでポーティングしてみた。 C - a pseudo-interpreter of the C programming language PerlRuby では、ワンライナーで処理が書けて便利です。でも、なぜか C では書くことができません。仕事上の都合で、小さな処理を C 言語で書く必要があったので、ワンライナーも書くことのできる C 言語のインタプリタ(?)を作ってみました。 http://labs.cybozu.co.jp/blog/kazuho/archives/2006/01/large_c.php 目指せバイナリアン (C-0.06) C-0.06 をリリースします。 http://labs.cybozu.co.jp/blog/kazuho/archi

    Big Sky :: コマンドラインでC言語をワンライナー出来る「C」をWindowsにポーティングした。
    zetamatta
    zetamatta 2009/10/29
    曰く『昔なつかしnyacusなんかを使えばシングルクォートでも行けるはずです。(cygwin?何それ)』
  • Route 477(2009-10-06)

    ■ [prog] 言語間のおおまかな速度差 「Computer Language Benchmarks Game」を眺めて、各言語のおおまかな速度性能をまとめてみた。 http://shootout.alioth.debian.org/u32q/shapes.php C、C++ ---- 1倍の壁 ---- Java ---- 3倍の壁 ---- Scala C#(Mono) Haskell(GHC) OCaml CommonLisp(SBCL) Fortran ---- 10倍の壁 ---- Lua(LuaJIT) Erlang Scheme(PLTScheme) ---- 30倍の壁 ---- JavaScript(V8, Tracemonkey) Smalltalk(VisualWorks) ---- 50倍の壁 ---- Python PHP ---- 100倍の壁 ---- Pe

    Route 477(2009-10-06)
    zetamatta
    zetamatta 2009/10/06
    Lua や scheme が、かなり速くてビックリ!
  • quine リレー - まめめも

    Update (2013-07-15): I improved this program to 50-language version. 50 言語版にパワーアップさせました。 これはこのプログラム自身を出力する Unlambda プログラム、を出力する Whitespace プログラム、を出力する brainfuck プログラム、を出力する Java プログラム、を出力する C プログラム、を出力する Haskell プログラム、を出力する OCaml プログラム、を出力する Lua プログラム、を出力する Perl プログラム、を出力する Python プログラム、を出力する Ruby プログラム、です。 # ruby l=92.chr;eval s="s=s.dump[r=1..-2].gsub(/("+l*4+"){4,}(?!\")/){|t|'\"+l*%d+\"'%(t .s

    quine リレー - まめめも
    zetamatta
    zetamatta 2009/09/19
    Ruby→Python→Perl→Lua→OCaml→Haskell→C→Java→brainfuck→Whitespace→Unlambda とプログラムがプログラムを生成するリレー
  • Python+Psycoが速い - DoMshi

    Pythonの勉強にと思って素数を洗い出すプログラムを書いた。 そしたら結構速いことが分かった。 面白くなって他の言語と比較してみた。 プログラムはコマンドライン引数で指定された上限(のようなもの)までの素数を洗い出すもので 上限を10000000として速度を計測した。 言語時間 Python(Psycoあり)21秒 Python(Psycoなし)137秒 Ruby(1.8)上限1000000で37秒 Ruby(1.9)上限1000000で23秒 Ruby(svn:rev23170からmake)133秒 PHP134秒 Java(OpenJDK6が最速)10.2秒 C++5.0秒 C5.0秒 D6.2秒 Lua(5.1でしか動かない)116秒 Perl96秒 先頭に二行足すだけでこの速度。すごい。 (Psycoは実行時に関数をコンパイルしてくれるらしい) Python import psy

  • バイナリシリアライズ形式「MessagePack」 - Blog by Sadayuki Furuhashi

    Googleが公開したバイナリエンコード手法であるProtocol Buffersは、クライアントとサーバーの両方でシリアライズ形式を取り決めておき(IDL)、双方がそれに従ってデータをやりとりするようにします。 この方法では高速なデータのやりとりができる反面、IDLを書かなければならない、仕様を変えるたびにIDLを書き直さなければならない(あらかじめしっかりとIDLを設計しておかないとプログラミングを始められない)という面倒さがあります。 ※追記:Protocol BuffersのデシリアライザはIDLに記述されていないデータが来ても無視するので(Updating A Message Type - Protocol Buffers Language Guide)、仕様を拡張していっても問題ないようです。 一方JSONやYAMLなどのシリアライズ形式では、何も考えずにシリアライズしたデータ

    バイナリシリアライズ形式「MessagePack」 - Blog by Sadayuki Furuhashi
    zetamatta
    zetamatta 2008/08/17
    ProtocolBuffers を越えるバイナリシリアライズ方式。IDLがなくてもデシリアライズができる、順次読み込んだところからデシリアライズできる、バイナリ形式なので高速かつ高圧縮などの長所がある。
  • 1