タグ

xsに関するfbisのブックマーク (18)

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • XS code template - 動的にXSUBを生成する - エキスパートPerl - Perl-users.jp

    XSコードはふつうPerlコードよりも多機能で高速ですが,書くのが難しいため敷居が高いことも事実です。また,いちいちコンパイルしなければならないのも煩わしい点です。 ところで,Perlにはクロージャという仕組みがあり,動的にコードを生成することができます。したがって,XSでクロージャに等しいことを実現できれば,XSコードの煩わしさを避けつつXSの利益を享受することができます。 なお,この文書はXSによるコード例を解説していますが,XSそのものについては解説しません。 XSについてはperlxstutやperlxs,perlapiを参照してください。 クロージャの分析 まず,Perlのクロージャを分析します。Perlのクロージャは以下のようなものです。 sub make_accessor{ my($name) = @_; return sub{ $_[0]->{$name} }; } my

    fbis
    fbis 2009/01/28
    XS code template - 動的にXSUBを生成する
  • モダンなXSの書き方 - Islands in the byte stream (legacy)

    PerlのソースコードはPerl言語以上に変化が大きく,それに伴ってXSの書き方もだいぶ変わってきている。新しいAPIを使ったほうが可読性がよかったり高速だったり使いやすかったりする。 たとえば,スカラー(SV)から文字列(PV: pointer valueつまりchar*)を得るAPIの変遷は次のようになっている。 /* SV*からPVを得る古い書き方 */ STRLEN len; const char* pv = SvPV(pv, len); # pvとlen両方ほしいとき const char* pv_only = SvPV(pv, PL_na); # pvだけほしいとき /* その後SvPV_nolen()が追加され,PL_naはdeprecatedに */ const char* pv_only = SvPV_nolen(pv); /* 今は*_constが追加されたのでcons

    モダンなXSの書き方 - Islands in the byte stream (legacy)
    fbis
    fbis 2008/12/18
  • 私的 XS メモ - IT戦記

    参考にしたサイト集 perlxs - perldoc.perl.org perlxstut - perldoc.perl.org perlguts - perldoc.perl.org perlapi - perldoc.perl.org http://d.hatena.ne.jp/tokuhirom/20081209/1228829454 Perl XS メモ - typemap と MAGIC をからめて - daily dayflower http://pub.ne.jp/wakapon/?entry_id=1109553 http://pub.ne.jp/wakapon/?entry_id=1109664 準備 $ h2xs -A -n MyXSS Makefile.PL CC => 'g++', 型 SV スカラー AV 配列 HV ハッシュ CV コード GV グロブ RV リ

    私的 XS メモ - IT戦記
    fbis
    fbis 2008/12/16
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    fbis
    fbis 2008/12/10
  • wakaponさんの超☆Perl備忘帳: DynaLoader.pm XSLoader.pm newXS

    DynaLoader.pmとXSLoader.pmまわりのお話.動作の仕方や,両者の違いなどを見ていく.参考にしたのはperl5.10.0のソースツリー. 1. XSUBとnewXS DynaLoaderの質はXSUBなので,まずはそのあたりから見ていく.XSUBを使ったモジュール(=Pure-Perlじゃないモジュール)を作成するときには,DynaLoader.pmやXSLoader.pmを使う.例えばthreads.pmの場合,冒頭に以下のような記述がある. # Load the XS code require XSLoader; XSLoader::load('threads', $XS_VERSION); これでXSUB(単にCのサブルーチン; XSコード)をPerl処理系に組込んだことになる.この「組込む」という工程には,newXSが使われる.例えばthreads->creat

    fbis
    fbis 2008/12/06
  • Perl/XSが得意なこと - Islands in the byte stream (legacy)

    最近ひたすらXSを書いていて思ったのが,XSはやっぱり速いということ。 ただ,いつでも無条件に速いというわけでもなく,何も考えずに書くとPurePerlのコードより遅くなることも珍しくない。実際,最近書いたShikaやMOPのXS版もいきなり高速だったわけではなく,一番最初のコードはPurePerlのほうが10%-30%ほど高速だった。 いろいろベンチマークをとった結果の感触として,XSの得手・不得手が分かってきたのでメモしておく。ちなみに下記で「注意を払う」というのは内部で呼ばれるmalloc()を極力減らすという意味で使っている。SVの生成自体はmalloc()を伴わないことが多い*1が,文字列の生成/連結や配列の生成/push/unshiftでは内部でmalloc()が呼ばれる可能性が高く,速度を落とす原因となる。 得手分野 ループ - XSのループが早いというより,Perlのループ

    Perl/XSが得意なこと - Islands in the byte stream (legacy)
    fbis
    fbis 2008/12/03
  • XSとPuerPerlの二つの実装を持つモジュールの書き方 - Islands in the byte stream (legacy)

    XSとPurePerl(PP)両方の実装を持つモジュールは少なくない。たとえば: Data::Dumper List::Util/Scalar::Util (List-Scalar-Utils) List::MoreUtils Class::MOP Params::Util (>=0.35) Params::Validate Data::Util DBI JSON/JSON::XS Text::CSV/Text::CSV::XS このように一般的に使われることなのだが、その書き方は多様で定説がない。 Data::Dumperは関数を別の名前で用意し、実装を切り替えるインターフェイスを持つ。 List-Scalar-UtilsはXSがデフォルトで、さらにXSでのみ提供している関数があり、そのような関数はインストールの状態によっては利用できない。なお、そのためにTask::Weakenという特

    XSとPuerPerlの二つの実装を持つモジュールの書き方 - Islands in the byte stream (legacy)
    fbis
    fbis 2008/12/03
  • PL_check hack - daily dayflower

    (あとでかく) XS くらいいじれないと Shibuya.pm に加入できないらしいので,とりあえず書きましたー。今回は実践編なので,あまりわかりやすい内容&たいした内容ではないです。わっふるさせてごめんなさい。 ゴール #!/usr/bin/perl eval 'print "Hello ' . $ARGV[0] . '!\n"'; とか危険ですよねー*1。こんな機能があるなんてけしからん。ですので,eval の実行を抑制するモジュールを書いてみました。 というのは冗談で,eval の実行主体となる OPCODEが,システム内で「完結」してます(んーうまく表現できない)。なのでサンプルとしていじりやすく,この題材をとりあげました。 評価型 eval はどのような OPCODE に変換されるのか まずは単純なコードを書いて,OPCODE がどのようになるのかたしかめてみます。 use st

    PL_check hack - daily dayflower
    fbis
    fbis 2008/09/27
  • v8 (Google JavaScript Engine) を Perl XS モジュールにしてみた - daily dayflower

    やはりやっつけで。Joke module です。 いろいろ書きたいことがあるけど,そのうち(追記するかも)。 libv8 と XS の間をとりもつ bridge.cc。 /* bridge.cc */ #include <v8.h> #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" /* harmful macro!, but, but, ... */ #undef New #include "bridge.h" using namespace v8; class V8Context { public: V8Context() { HandleScope scope; Handle<ObjectTemplate> global = ObjectTemplate::New(); Handle

    v8 (Google JavaScript Engine) を Perl XS モジュールにしてみた - daily dayflower
  • YappoLogs: Internals::SvREADONLY

    Internals::SvREADONLY 404 Blog Not Found:perl - Const released -- True Readonly 実は、Perl 5.8以降では、Internals::SvREADONLY()という関数がuseなしで使えるようになっていて、Internals::SvREADONLY($scalar, 1)で$scalarをREADONLY flagをonに、Internals::SvREADONLY($scalar, 0)でoffにできます。知らなかった! SvREADONLYはwakaponが解説してるよ! これは universal.c にて実装されていて、使い方は lib/Internals.t を見るべし。 Hash::Utilでも使われてるよ。 danさんの ただし、これではscalarしかflagをいじれません。というわけで、同様の

    fbis
    fbis 2008/06/27
  • ゆーすけべー日記: Shibuya.pm tech talk #9 (XS Nite) に行って来た

    サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ

    ゆーすけべー日記: Shibuya.pm tech talk #9 (XS Nite) に行って来た
  • 404 Blog Not Found:perl - BSD::getloadavg

    2006年10月26日20:30 カテゴリLightweight Languages perl - BSD::getloadavg レポートを受け追記; BSD::Sysctlのことも追記 この部分がなんとも惜しいような気がしたので書きました。 Milano::Monolog: mod_rewriteでサーバーの負荷が高いときだけリダイレクトする my ($ldavg1, $ldavg2, $ldavg3) = `uptime` =~ /load average:\s+([.0-9]+),\s+([.0-9]+),\s+([.0-9]+)/; BSD::getloadavg CPAN http://www.dan.co.jp/~dankogai/cpan/BSD-getloadavg-0.01.tar.gz これで当該部分は、 #!/usr/bin/perl use strict; use

    404 Blog Not Found:perl - BSD::getloadavg
  • http://d.hatena.ne.jp/lestrrat/20060724

    fbis
    fbis 2006/08/08
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    fbis
    fbis 2006/08/08
  • Template-ToolkitはPure Perlでも動く : blog.nomadscafe.jp

    Template-ToolkitはPure Perlでも動く 高速化のためにXSを使用していたり、普通にインストールする依存モジュールが多いためインストールが大変なイメージがあるTemplate-Toolkitは実はPure Perlでも動く。 単純な使い方をするだけなら、アーカイブをDLしてきて、展開、Template-Toolkit-2.14以下の lib/Template.pm lib/Templateディレクトリ これを適当なパスにコピー。 Perlスクリプトで #!/usr/bin/perl use strict; use lib "Template.pmを置いたディレクトリ"; use Template; で使える。単純な使い方をする場合には依存モジュールはなかったりします。 READMEの Text::Autoformat 1.03+ DBI 1.14+ (and relev

    fbis
    fbis 2006/04/21
    むしろXS版にできるのを知らなかった
  • perlxs - XS言語リファレンスマニュアル

    NAME DESCRIPTION Introduction On The Road The Anatomy of an XSUB The Argument Stack The RETVAL Variable The MODULE Keyword The PACKAGE Keyword The PREFIX Keyword The OUTPUT: Keyword The INIT: Keyword The NO_INIT Keyword Initializing Function Parameters Default Parameter Values The PREINIT: Keyword The SCOPE: Keyword The INPUT: Keyword Variable-length Parameter Lists The PPCODE: Keyword Returning U

    fbis
    fbis 2006/04/21
  • ひげぽん OSとか作っちゃうかMona- - [Perl] XS利用でPerl高速化

    (追記:2009/03/25) id:tokuhirom さんからコメントを頂きました。このベンチマークは問題があるそうです。 http://d.hatena.ne.jp/higepon/20050615/1118829090#c (追記:終わり) PerlにはC言語で書かれた関数を呼び出すためにXSという仕組みが存在します。 一部CPANモジュールでも使われているためご存知の方も多いと思いますが、今回はこのXSの簡単な利用方法を紹介したいと思います。 なおXSは、はてなでも使用しています。 さてXSモジュールを使うとうれしい事は C言語で書くことにより、処理が高速になる可能性がある 既存のC言語ライブラリ資産をPerlから利用することができる Perlがあまり得意でない、メモリ内などに存在するビット単位での細かなデータ構造を、あれこれできる などが挙げられると思います。 今回は、高速化に

    ひげぽん OSとか作っちゃうかMona- - [Perl] XS利用でPerl高速化
    fbis
    fbis 2006/04/21
  • 1