タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

xsに関するhirafooのブックマーク (10)

  • XSでメモリークを避けるたった一つの方法 - Islands in the byte stream (legacy)

    XSでメモリリークを避ける基原則は、それほど難しくない。すなわち、作ったSV(およびSVファミリ)はすぐsv_2mortal()するのである。mortalなSVはスコープ*1から抜けるときに解放されるため、メモリリークは起こらない。つまり、あるスコープ内で新しく作ったすべてのSVをmortalな状態にしておくということだ。 この原則のもとでコードを書くと、誤ってリファレンスカウントを増やさなかったケースでは警告が頻繁に起きる。しかし、少なくともメモリリークは起こらない*2。メモリリークの検出は難しいので、警告が出るのは福音であろう。 もちろんこれは原則で、メモリリークにまつわることで覚えなければならないことは決して少なくない。 たとえば、XSUBの戻り値をSV*にするとき、sv_2mortal(RETVAL)してはいけない。これはPerlの仕様ではなくxsubppが勝手にsv_2mort

    XSでメモリークを避けるたった一つの方法 - Islands in the byte stream (legacy)
  • にひりずむ::しんぷる - Win32::Unicode を XS 化させてみた

    MSWin32 で Perl を使っている人にしか価値のない Win32::Unicode ですが、ちょっと前に 0.19 をリリースしました。 今回は、cygwin 対応のコードが入ってます。 cygwin では 1.7.1 あたりから、UTF8 が基調となっていますが、それはターミナルだけではなく、Perl でもそうです。恐らく cygwin の API が UTT8 化されたので、 Perl でそいつを呼び出す場合もそうなったんでしょう。(てきとーです) 何はともあれ、最近の cygwin-perl では、Win32::Unicode を使わずとも Unicode ファイルが扱えたりする(CORE::readdir で UTF8 で帰ってきたりする)ので、使う意味はないんですが、とりあえず CPAN-Testers でいつも cygwin がコケてるのでちょろっと対応した次第。まだ

  • はてなブログ | 無料ブログを作成しよう

    顔に見える?最近「送水口」が気になるという話 「送水口」が気になる今日この頃 最近街中で気になる存在、それがこの「送水口」です。地上のフロアが7階以上あるビルなど、一定の条件を満たした建築物には設置が義務付けられているもので、火事が発生したフロアにただちに水を送るために使われるものです。ポンプ車…

    はてなブログ | 無料ブログを作成しよう
  • はてなブログ | 無料ブログを作成しよう

    27年ぶりのYUKIライブ 2024/8/11。僕は埼玉の戸田市文化会館で行われた”YUKI concert tour “SUPER SLITS” 2024”に参加した。前にYUKIの歌声を聴いたのは1997/05/27の代々木第一体育館。実に27年の歳月が経ってしまった。 なぜそんなに間が空いたのか。なぜ、それでも参加しようと思ったのか…

    はてなブログ | 無料ブログを作成しよう
  • wakaponさんの超☆Perl備忘帳: スタッシュ(シンボルテーブル)と型グロブ(変数管理テーブル)

    に立ち返りんぐ。Perlは変数シンボルテーブルがプログラマに開放されているので、いつのまにかわけわかめなスカラや配列やらハッシュやらメソッドが埋め込まれている場合がある。そのような場合でなくても、もともとPerlの仕様としていくつかのサブルーチンが埋め込まれている場合がある。そういったものを目で確認するというのが今回のめもめも。 利用するモジュールは、Data::DumperとDevel::Peekモジュール。いずれもバージョン5.10.0に標準でインストールされている。 まずは以下のようなパッケージHOGE.pmを用意する。 HOGE.pm package HOGE; our $huga = 2; our @huga = (1 .. 10); our %huga = (1 => 2); sub huga { return 'huga'; } open (huga, '<', 'hug

  • Test::LeakTrace 0.07 - Islands in the byte stream (legacy)

    Devel::LeakTraceもそうだが,0.07以前のTest::LeakTraceは不可解な値を報告することがあった。 $ perl -MDevel::LeakTrace::Fast -e 'my $a; my $b = \$a' leaked SV(0x0x8f87dd8) from -e line 1 leaked SV(0x0x8f87c94) from -e line 1 $ perl -MTest::LeakTrace::Script -le -e 'my $a; my $b = \$a' leaked SCALAR(0x9f4cdd8) from -e line 1. $ 「Test::LeakTraceをCPANにあげた」の記事でも,目的の相互参照だけでなく,空のハッシュが報告されている。 長らくこれが何なのか分からなかったのだが,この現象のメカニズムをどうやら特定でき

    Test::LeakTrace 0.07 - Islands in the byte stream (legacy)
  • JavaはPerlよりも比較にならないほど速い?

    川合孝典(2002/3/12) はじまり PHPとの比較のときから話が出てはいたんですが、 JavaPerlとどっちが速いのかという気になるひとには気になる(気にならない人は気にならない(^^))話をちょっと調査してみようということで。 とはいえ、ちょっとは気になるというわけで、2つのケースについてテストしてみました。 1つは非常に単純なケースで、こちらのページでのベンチマークをベースに、単にページを表示するだけです。 http://java-house.etl.go.jp/ml/archive/j-h-b/027274.html#body これだけではやる前からPerlが圧倒的に勝つ(というよりTOMCAT対mod_perlなんですけどね)のは当然なので、以下のURLを参考に http://java-house.etl.go.jp/ml/archive/j-h-b/03014

  • ひげぽん 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高速化
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

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