タグ

Perlと高速化に関するpmakinoのブックマーク (42)

  • 第55回 Perlコードの高速化―文字列処理の時間短縮とデータ構造の効率化(2) | gihyo.jp

    前回の(1)はこちらから。 文字列 まず紹介するのは文字列処理です。 文字列処理には、Perlの武器である正規表現が欠かせません。正規表現の記述ルールが手に馴染んでくると、文字列の照合や取り出し、書き換えにはまず正規表現を使うでしょう。しかし、正規表現で書いた処理には、組込み関数や演算子を使って書き換えられるものがいくつかあります。そして、多くの場合では関数や演算子を使った処理のほうが高速です。 節では、正規表現を使った処理を関数や演算子で置き換える例を紹介します。 特定文字の削除にはy///を使う 不要な文字や、行末の改行コード(\n⁠)⁠、タブ文字(\t)などを空白文字に置き換える処理(削除)は、頻繁に行うものでしょう。特定文字を削除するときに最も使うのが置換演算子です。 たとえばメールアドレスは<neko@nyaan.jp>のように<と>で囲まれた形式で現れることがあります。SMT

    第55回 Perlコードの高速化―文字列処理の時間短縮とデータ構造の効率化(2) | gihyo.jp
  • 毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)

    圧倒的な速度で動作するadiaryの仕組みを解説します。勉強会等でスライド発表の要望がありましたらご連絡ください。

    毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
  • 「ISUCONの勝ち方」! 100万円を獲るためのチューニングの極意 #yapcasia #yapcasiaE

    達人が教えるつぶあん🇺🇦 @kazeburo 達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践 https://t.co/npMffXFNhx 執筆しました さくらインターネット SRE室 Mackerelアンバサダー ISUCON13作問 運用系小姑 Goを書くPerl Monger つぶあん派 https://t.co/yo7qhwBHf2

    「ISUCONの勝ち方」! 100万円を獲るためのチューニングの極意 #yapcasia #yapcasiaE
  • 第17回 Webアプリケーションのパフォーマンス改善(1) | gihyo.jp

    大きな効果を上げるために チューニンガソン#1~#3の改善率を見ると、アプリケーションや全体のアーキテクチャに手を入れないで改善できるのは最大でも10倍以下です。もちろん数倍速度が違えばサーバ台数を大きく減らせるので有意義なのは間違いないのですが、ISUCONやチューニンガソン#4のような飛躍的な高速化は望めないことがわかります。 つまりチューニングでは、単にパラメータ設定を変更するのみではなく、ボトルネックになっているコードやクエリ、アーキテクチャに的確に手を入れていくことで大きな効果を上げることができるのです。 ボトルネックの発見と解消が大事 システム全体の処理時間についてパレートの法則(経験則)を適用すると、「⁠全体の処理時間の80%は20%の部分で発生している」ということになります。実際にシステム全体で一番ボトルネックになっている部分を解消しないことには、ほかの部分に手を入れても大

    第17回 Webアプリケーションのパフォーマンス改善(1) | gihyo.jp
  • http://dl.dropbox.com/u/224433/YAPC2012/index.html

  • DBIx::ProfileManager で SQL Profiling | BLOG - DeNA Engineering

    風邪を引きっぱなしで全然治らない山口です。恐らくネット上では zigorou と言うハンドルでご存知の方もいらっしゃるかもしれません。 まずは技術系のネタの第1弾です。 今回は実際にモバゲーオープンプラットフォームで用いている SQL Profiling の方法をご紹介致します。 DBI::Profile について モバゲータウン ではデータベースは MySQL を用いており、サーバーサイドプログラムから管理ツールまでのほとんどが Perl で書かれており、 当然ながら DBI モジュールまたはそれを利用したモジュールを使って DB アクセスをしています。 今回、オープンプラットフォームチームで作った OpenSocial RESTful API ですが、モバゲータウン内のデータベースに大量にアクセスする為に日々どのようなクエリが実行され、どれくらいの実行時間が掛かっているかは常に気になる

    DBIx::ProfileManager で SQL Profiling | BLOG - DeNA Engineering
  • ゆーすけべー日記

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

    ゆーすけべー日記
  • 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

  • 空文字列比較は eq/ne と length のどっちが速いか - Craftworks Tech Blog - Branch

    最近、空文字列のチェックの際に、面倒臭くて $_ eq '' の代わりに、空文字列だと length が偽を返すことを利用して、自分しか見ないようなソースでは以下のように書くことが多いのですが、 return unless defined and length; パフォーマンス的には、$_ ne '' と比べてどうなんだろうと思って調べてみました。 #!/usr/bin/perl use strict; use warnings; use Benchmark ':all'; my $empty = ''; my $not_empty = 'blah'; cmpthese(timethese(100000000, { emp_cmp_eq => sub { $empty eq '' }, emp_cmp_ne => sub { $empty ne '' }, emp_len => sub {

    空文字列比較は eq/ne と length のどっちが速いか - Craftworks Tech Blog - Branch
  • Devel::NYTProfでコードのプロファイリング - iDeaList::Writing

    Shibuya.pm#11でclkaoさんが紹介されていたDevel::NYTProfモジュールを初めて知り、早速試したところ とっても結果が美しくて便利だったのでメモメモ。 開発がひととおりすんだが、なぜか速度がでない。そんなときにはプロファイラの出番です。 Devel::NYTProf - モダンなPerl入門 - モダンなPerl入門 指定したモジュール別にライン毎・ブロック毎・関数毎など、プログラムのどこで時間がかかってるかわかるモジュールです。 以下のコマンドだけで、解析結果が./nytprof/index.htmlに出力されています。 perl -d:NYTProf target.pl # HTML出力 nytprofhtml open nytprof/index.html SYNOPSISではcsvにする方法も掲載されています # or into comma seperate

    Devel::NYTProfでコードのプロファイリング - iDeaList::Writing
  • PerlとRubyで省メモリなハッシュを使おう - mixi engineer blog

    サボっていた早朝ジョギング@駒沢公園を再開して2週間たち、やっと抜かれる数より抜く数の方が増えてきたmikioです。今回は、PerlRubyのハッシュの代用としてTokyo Cabinetを使うことでメモリ使用量を激減させられることを説明します。 抽象データベースAPI Tokyo Cabinetには抽象データベースという機構があり、先日、そのPerlRubyのバインディングをリリースしました。それを使うと、各種言語のハッシュとほぼ同じような共通したインターフェイスで、以下のデータ構造を利用することができます。 オンメモリハッシュ:各種言語に標準のハッシュと同じく、メモリ上でkey/valueの関係を表現する。 オンメモリツリー:メモリ上の二分探索木としてkey/valueの関係を表現する。 ファイルハッシュ:いわゆるDBMとして、ファイル上でkey/valueの関係を表現する。 ファ

    PerlとRubyで省メモリなハッシュを使おう - mixi engineer blog
  • 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

  • YappoLogs: CPUの気持ちは大事だけど、VMの気持ちも考えようよ

    CPUの気持ちは大事だけど、VMの気持ちも考えようよ CPUの気持ちになってプログラムを書くということ Kansai.pm#11 参加記その1 - プログラマになりたい ちなみに、下記のコードはデータハザードを解消する為のコーディング例です。データハザードは、命令が利用するデータ間に依存関係がある場合に発生します。前の命令が終わらないと後ろの命令が実行できないとか。ですので、それを解きほぐしてやれば、並列で処理が出来るようになります。という感じでnaoyaさんもぶこめで loop unrolling は perl でもちゃんと効果があるって書いてるけど、それforブロック(スコープ)が一段増えてる事で差が出てるんじゃないかと思うわけです。はい。 以下検証コード use strict; use warnings; use Benchmark qw(:all); cmpthese(500000

  • 404 Blog Not Found:perl - Regexp::Assembleのススメ

    2007年04月19日15:00 カテゴリLightweight Languages perl - Regexp::Assembleのススメ というわけで、Regexp::Assembleのご紹介。 PERL HACKS(日語版) [英語版] odz buffer - それ Regexp::Assembleん?ループ云々を抜きにして、こういうのは Regexp::Assemble の出番じゃないの? すでにPerl Hackers御用達のモジュールとなっていますが、まだ知らない方もいらっしゃるかも知れないので。 何をするモジュールか、といえば、以下を見れば一目瞭然でしょう。 Regexp::Assemble - Assemble multiple Regular Expressions into a single RE - search.cpan.org use Regexp::Asse

    404 Blog Not Found:perl - Regexp::Assembleのススメ
    pmakino
    pmakino 2009/03/16
    6~70個のファイルパスとのマッチを繰り返す処理をこれ使って1つにまとめたら、これまで数十秒かかってたマッチングが一瞬で終わるようになったヨ!
  • キャッシュしよう

    京都観光で散財しすぎて貯金がないmalaです。こんにちは。キャッシュの話を書きます。 色んなキャッシュがあります データベースから引く前にmemcachedから取得したり テンプレートエンジンのレンダリング結果をキャッシュしたり 各種ウェブサービスのリクエスト結果をキャッシュしたり その他諸々CPUったり時間のかかる処理をキャッシュしたり 簡単に思いつくのはこの程度ですが、スケーラブルなウェブサイトを構築するには常識的に考えてそんなのキャッシュしねーだろうというようなものをキャッシュする必要があります。 DateTimeをキャッシュしよう 同じ時刻に対するDateTimeオブジェクトをキャッシュします。 package MyDateTime; use strict; use base qw(DateTime); my %CACHE; sub now { my $class = shif

  • 京都観光を終えて - mala

    Shibuya.pm Technical Talk #10 (2008-11-27) mala 最初: sm5377260 (lestrrat) マイリスト: mylist/9691133http://shibuya.pm.org/blosxom/techtalks/2008011.html

    京都観光を終えて - mala
  • DNS逆引き高速化

    Perlの gethostbyaddr は遅くて使い物にならない!2000個ぐらいのIPアドレスホスト名変換するのに5時間以上もかかる。はじめはネットワークか、DNSサーバーのせいかと思ったが、nslookup で試したところ gethostbyaddr よりずっと早かった。ということはやっぱり gethostbyaddr の問題と推定できる。自力でnslookupの情報からホスト名を取り出すのもよいだが、CPANのライブラリを使うとずっと簡単だと思う。 1.ライブラリダウンロード http://search.cpan.org/~olaf/Net-DNS-0.63/lib/Net/DNS.pmから Net-DNS-0.63.tar.gz ダウンロード。 2.インストール インストールというよりは設置ですね。Perlのライブラリパスにダウンロードしたものをコピーする。 3.コード #!/u

    DNS逆引き高速化
  • ウェブリブログ:サービスは終了しました。

    「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

  • a threadless kite - 糸の切れた凧

  • Perl最速伝説

    Perlのロジックの違いから、どの程度速度差が出るのか、スピードテストの記録です。 最速伝説と言いながらPerl以外の言語とバトルしてないじゃないかという突っ込みは無しの方向でお願いします。 Unix帝国Linux市、ここにはインタプリタ屋のメッカ、オライリー峠がある。 その峠からの下りフローチャートは勾配がきつくタイトなIF文が連続するコース。 そこを軽々と走り抜ける男、ラリー・ウォール。 ひょんなことからオライリー峠のバトルに参加し、 インテル入ってる!といわれるSUN兄弟の弟ジョン・ケムニーが駆るBASICに勝ってしまったラリー。 ラリーの乗るPerl5.8、通称“ゴーハチ”は彼の若かりし頃の傑作、20年前のログ整理用言語である。 ジョン・ケムニーにラリーのゴーハチが勝ったという噂はたちまち周辺のインタプリタ屋たちの間に広まり、次々と挑戦者が名乗りを上げてくる。 しかし、バリバリにチ