2007年12月15日20:00 カテゴリLightweight Languages javascript vs perl - プライベート変数による初期化 はてブを見ると、「これ、ほんとに差が出るの?」と思っている方も結構いらっしゃるようなので。 Life is beautiful: Javascript、クロージャを使ったプライベート関数の隠蔽について 「うーん、マッピングのためのオブジェクトを毎回作り直しているところかな。」 以下、10000回実行した結果をミリ秒で表示します。ここで_nがnaiveな実装、_cがクロージャーを使って変数初期化を一度で済ませている例です。疑っている方はソースをご覧下さい。 プログラム: p(benchthis(10000, code2name_n, 'ja' )); p(benchthis(10000, code2name_c, 'ja' )); 出力
試してみた。あと追記・修正した。 追記(2007-09-11T11:20:32+09:00) 激しく既出だった。(d:id:spiritloose:20060909:1157767723) id:spiritlooseさんとやりたい方向性がかなり被ってるなぁ。w あと、 新しいbinary protocol使えばもっと差が出るかも むむ!後で調べる。 前置き ちなみにCache::Memcachedの1.21*1から使えるCache::Memcached::GetParserの代わりがCache::Memcached::GetParserXSです。 newする際に、 my $cache = Cache::Memcached->new({ servers => $servers, parser_class => ''Cache::Memcached::GetParserXS }); のように
Cache-Memcached-XS-0.01 - client library for memcached (memory cache daemon) using libmemcache - metacpan.org libmemcache を使って書かれた Memcachedのインターフェース。 使い方はほぼ Cache::Memcached と同じっぽい。 速度にどのぐらい差が出るかベンチとってみた。 #!/usr/local/bin/perl use strict; use warnings; use Benchmark qw(timethese cmpthese); use Cache::Memcached; use Cache::Memcached::XS; my $bench = timethese(10000, { 'Cache::Memcached' => sub { m
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
概要 noteitは今あるあなたのホームページに簡単に付箋システムを導入することができるまったく新しいジャンルのCGIです。 noteitが設置できたら、以下の一行をあなたのウェブページに追加してください。 <script type="text/javascript" charset="EUC-JP" src="/cgi-bin/noteit.cgi?logID=XXX"></script> noteitの導入はこれで終わりです。この一行を書くだけであなたのウェブページはすぐに付箋を貼ることができるように なります。 特徴 noteitは以下の特徴を備えています。 既存のウェブページに付箋が貼れるようになる。 Ajaxな通信を用いたページ遷移のない付箋編集。 幅広い対応ブラウザ。 編集内容のRSSによる配信。 ひとつのCGIでウェブページをいくつでも付箋化。 軽い。(30kb前後、画
« DBI::Printf - A Yet Another Prepared Statement | メイン | DBIx::Printf と LIKE 式 » 2007年10月02日 Perl で並列処理 (using マルチプロセス) Shibuya.pm で牧さんが Gungho の話をされたそうで、スライドを拝見しました。Pathtraq への言及もあってうれしい。 で、スライドを読んでいて、HTTP アクセスと HTML 解析/保存処理を分離すべき、となっている点が気になりました。実は Pathtraq (のうち奥が書いている部分) では、Gungho と HTML の解析/保存処理を分離することはしていません。そのかわり、複数のワーカープロセスを駆動することで、スループットを確保しています。分離モデルとマルチプロセスモデル、どちらの手法を採るべきかは、解析/保存処理の重さやエラ
サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一本吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には食材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい食材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ
えーっと、最近のお仕事でデータベース関連やってまして、DBMS としての性能試験みたいなのを実施したくて(しなくてはいけなくって・・・)、Perl で作ってみました。 いや、Apache bench とか使ってもいいんですが、httpd のメモリ使用量とかも馬鹿にならないので、Perl の ithread 使って書いてみることにしました。 →Perl の ithread 使うとメモリ一杯使うので、結果的に同じだったけど・・・(苦笑 プログラムの構造は、producer & consumer モデルってやつの応用です。具体的にはこんな感じ。 で、負荷スクリプトを走らせている間にデータベースサーバの負荷を vmstat なり、sar なりで計測すればOKです。キューに投入するリクエスト数(producer スレッドの enqueue 数)や処理スレッド数(consumer スレッドの数)を増減
サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一本吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には食材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい食材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ
Parallel::ForkManagerを使ったフォーク技 ついでにLWPx::TimedHTTPとか使って時間とてみる。 参考リンク CPAN (Parallel::ForkManager) CPAN (LWPx::TimedHTTP) perldoc.jp (Parallel::ForkManager) Parallel::ForkManagerは使い勝手がいい。 依存モジュールも少ないし、基本置けば動くはず。自分でforkさせるよりラクチン。 LWPx::TimedHTTPは時間とるのに便利だす。 例によてサンプル。 #! /usr/bin/perl use strict; use warnings; use LWP; use LWPx::TimedHTTP qw(:autoinstall); use Parallel::ForkManager; my $pm = new Para
いまさらWeb::Scraperを使ってみました。 使うネタがなかったのがスルーし続けた一番の理由だったのですが、それではいけないと思い、CISCO RECORDSの商品情報を取得するスクリプトという、僕以外誰も興味がないスクリプトを書いてみました。 cisco_scraper.pl #!/usr/bin/perl use strict; use warnings; use Web::Scraper; use URI; use YAML; use Data::Dumper; my $uri = shift; my %scraper; $scraper{'link'} = scraper { process 'a', 'name' => 'TEXT'; process 'a', 'uri' => sub { return URI->new_abs( $_->attr('href'), $u
ちょっと前に、Kwikiをインストールして、ほったらかしにしてたのですが、設定いじってみました。 Kwikiのプラグインの設定は、kwiki -new で作ったパス(例:/var/www/kwiki)の /var/www/kwiki/pluginsファイルの中に設定します。本来は、 kwiki -add Kwiki::...で、いけるはずなのだが、 Can't locate object method "plugins_file" via package "Kwiki::Config" at /home/ktat/svk/kwiki/lib/Kwiki/Command/V1.pm line 132.とか言って、いうこと聞かないので、自分で編集しました。 プラグイン名書くだけでいいので、別にコマンド使わなくても問題なしです。 ただし、依存性の問題があったりするので、そういうメッセージがでたら
だうんろーど りんく News(あたらしいのがうえ) madoka 4.2.10 release (2003/11/12) ふるいにゅーす <img src="https://www.madoka.org/madokab1n.png"> <img src="https://www.madoka.org/madokab1s.png"> バナーができました。つかってやってください。 madoka 4.2 madoka 4.2.10 release.(2003/11/12) madoka 4.2.10 をリリースしました。 madoka4 の安定化バージョンです。 cvsweb もあります madoka 4.0 madoka 4.0.36 release.(2002/11/25) madoka 4.0.36 をリリースしました。 madoka 4.0 は、安定化バージョンです。 今後新たな機能は
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く