タグ

プログラミングと高速化に関するiwwのブックマーク (11)

  • 「@」でエラー抑制すると PHP が遅くなるという噂について : a My RSS 管理人ブログ

    PHP では @ を付けることでエラーを回避できるという便利な記述方法があり、ものぐさな私などは if (@$var["foo"]) $result = $var["foo"]; みたいなコードを書いてしまいます。 で、この処理が「遅い」という噂やツッコミを度々受けるので調べてみました。 「ほら、そんな気にするほどでも無いよ」という結果を期待していたのですが、、、なんじゃこりゃ。。。 劇遅じゃないですか、これ。 いやはや・・・ ちょっと列挙しますね。以下のようなコードを単純 for 文で 100万回実行したときの結果です。 error_reporting(0) で PHP4 if (@$a["hoge"]) $b = $a["hoge"]; ⇒ 約 2.4 秒 if ($a["hoge"]) $b = $a["hoge"]; ⇒ 約 1.3 秒 if (isset($a["hoge"]))

    iww
    iww 2018/09/20
    マジか あとで実験してみよう
  • 1216彩票-官网平台

    您不具备使用所提供的凭据查看该目录或页的权限。 请尝试以下操作: 如果您认为自己应该能够查看该目录或页面,请与网站管理员联系。 单击刷新 按钮,并使用其他凭据重试。 HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。 Internet 信息服务 (IIS) 技术信息(为技术支持人员提供) 转到 Microsoft 产品支持服务 并搜索包括“HTTP ”和“401 ”的标题。 打开“IIS 帮助”(可在 IIS 管理器 (inetmgr) 中访问),然后搜索标题为“身份验证”、“访问控制”和“关于自定义错误消息”的主题。

  • sprintf を最大10倍以上高速化するプリプロセッサ「qrintf」を作った

    最近H2OというHTTPサーバを書いているのですが、プロファイルを取ってみるとsprintfが結構な時間をっていて不満に感じていました。実際、sprintfは数値や文字列をフォーマットするのに十徳ナイフ的に便利なので、HTTPサーバに限らず良く使われる(そしてCPU時間を消費しがちな)関数です。 では、sprintfを最適化すれば、様々なプログラムが より高速に動作するようになるのではないでしょうか。ということで作ったのが、qrintfです。 qrintfは、Cプリプロセッサのラッパーとしてソースコードに含まれるsprintfの呼出フォーマットを解析し、フォーマットにあわせたコードに書き換えることで、sprintfを高速化します。 たとえば、以下のようなIPv4アドレスを文字列化するコード片を sprintf( buf, "%d.%d.%d.%d", (addr >> 24) & 0xf

  • PHPコード最適化Tipsのウソと本当(解説) - カタコト日記

    PHP コード最適化 Best Practices 63+ - カタコト日記 前回は、元記事に一定の敬意を表して、項目とかはあえてそのままにしてたんですが、 自分としても気になる部分が多々あったので、少しだけ調べ直して優先度&解説つけました。 独断と偏見ですが。ヽ(´ー`)ノ 検証はしてません。ごめんなさいごめんなさい。 優先度A、B、C、不明、非推奨に分けてみました。どうぞつっこんでください。 長いよ、今回は。 優先度A. 頻度も高いし使えそう - 6つ 01. static にできるメソッドは static として宣言しよう。(4倍速い) 正しくは、static なメソッドには、OOP のルールに従ってちゃんと static 宣言をつけよう! ってとこでしょうか。来そうでないものを無理に static にしちゃえって話ではないはず。*1 × <?php public function

    PHPコード最適化Tipsのウソと本当(解説) - カタコト日記
  • Perlひと工夫 処理高速化やメモリー消費低減 - Perl/CGI解説・豆知識

    http://perl-free.topsite.ne.jp/PERL/Perl CGI フリー工房 総合 Perl フリーソフト Mod_Perl フリーソフト Perl 初めて使う Mod_Perl 環境構築 Perl CGI 実験室 サポート Perlスクリプト ひと工夫 処理高速化やメモリー消費低減など - 解説・豆知識 Perlスクリプトの高速化、ライブラリやモジュールの軽量化、メモリー消費低減、 データ1行読み、ループ工夫、絶対パス取得などの豆知識。- Perlひと工夫 Perlスクリプトって動けばそれで良い? 簡単便利 質的には、Perlスクリプトは動けばそれで良いと思います。 元々はLarry Wall氏が、「手間の掛からない、使い易いプログラム言語を」と開発したのがPerlです。 ですからPerlスクリプトの質は速さよりも「簡単便利」でしょう。 もっと高速に! 上記

  • 本当は速いImageMagick: サムネイル画像生成を10倍速くする方法 - 昼メシ物語

    一般的に ImageMagick のサムネイル画像生成は遅いとされており、パフォーマンスが求められるシーンでは Imlib2 などのより高速な画像処理ライブラリが使われることが多いです。 Imlib2 の高速さについては、以前「Imlib2でImageMagickより3倍高速かつ美しいサムネイル画像の生成 - 床のトルストイ、ゲイとするとのこと」という記事で紹介しました。この記事のベンチマークにおいて、Imlib2 によるサムネイル画像の生成は、 ImageMagick の3倍程高速でした。 しかし、 ImageMagick は Imlib2 より画質がよく、高機能で使いやすく、今も頻繁にメンテナンスされており、とてもよく出来ています。その点 Imlib2 は、2004年からメンテナンスされておらず、セキュリティホールが見つかっても、各Linuxディストリビューションがそれぞれパッチを当て

    iww
    iww 2013/08/08
    25秒かかってた処理が0.5秒になった。 なんやこれすごい。 元の設定があほ過ぎたのもあるけど
  • 配列をランダムに並び替える。かっこいいスクリプト : blog.nomadscafe.jp

    配列をランダムに並び替える。かっこいいスクリプト Perlで配列をランダムな順番に並び替えるスクリプトを書いてベンチマーク取ってみた。 環境はActivePerl 5.8 スクリプトは #!/usr/bin/perl use strict; use Benchmark; my @array=qw(a b c d e f g h i j k l m n); Benchmark::timethese(50000, { use_sort=>\&use_sort, use_foreach=>\&use_foreach, }); sub use_sort{ my @new= map {$array[$_->[0]]} sort {$a->[1] <=> $b->[1]} map {[$_,rand(1)]} 0..$#array; } sub use_foreach{ my @new = (); f

    iww
    iww 2013/02/02
    かっこいいということ
  • 開発メモ: ロック自作による高速化

    マルチスレッドのロック機構を自作してKyoto Cabinetを高速化したよという話。 背景 以前の記事にも書いたとおり、組み込みのrwlockはmutexに比べても遜色ない速度で動作して素敵なのだが、実はロック処理自体の並列性があんまり高くないんじゃないかなぁと思い始めてきた。というか、pthreadのロック機構は遅い(期待ほど速くない)んじゃないかなぁと感じる今日この頃。 特にspin lock(pthread_spinlock_t)とrwlock(pthread_rwlock_t)が遅い気がしている。プロファイルをとると、Kyoto Cabinetの実行時間の多くをロック回りの処理が占めているので、こいつらを自作のロックに置き換えて軽量化してみよう。pthreadのロックプリミティブはPOSIXの規程に基づいたいろんな機能を備えているが、自分で作れば自分のユースケースに必要な機能だけ

  • JavaがC++に圧勝するコード例 - LLVMとコンパイラとVM

    Author:nothingcosmos(坂頂佑樹) IT系、特にVMに関して 周辺技術の紹介等をしています。 コメント・質問はお気軽にどうぞ。 LLVM wiki twitter:nothingcosmos

  • C言語における文字列連結 — KaoriYa

    C言語で文字列連結を行う。とても簡単に思えるけれど、実はパフォーマンスについて考えることもあるんだよ、というお話。 C言語で2つ文字列の連結して、1つの文字列にするプログラム(関数)を書けるでしょうか? ちょっとC言語でプログラミングを学んだことがあれば簡単ですよね。要求仕様としては2つの引数aとbをとり、どちらもNULターミネートな文字列で、その文字列をヒープから確保した領域で連結して戻り値として返す、という感じの動作です。ヨユーですね。ちょっと書いてみてください。 char* str_join(const char* a, const char* b) { char* p = malloc(strlen(a) + strlen(b) + 1); strcpy(p, a); strcat(p, b); return p; } こんな風に書いてしまったあなたは及第点です。個人的には失格です

    iww
    iww 2012/01/16
    高速化の余地のある分は関数にわけておいて、開発中は上みたいに書いとく。あとでこの関数を高速化するなりして差し替える。
  • ¥Ð¥¤¥È¥Ë¥Ã¥¯¥½¡¼¥È - ¹â®²½¥×¥í¥°¥é¥ß¥ó¥°

    ¹â®²½¥×¥í¥°¥é¥ß¥ó¥° ¥È¥Ã¥×¥Ú¡¼¥¸¥Ú¡¼¥¸°ìÍ÷¥á¥ó¥Ð¡¼·Ç¼¨ÈÄÊÔ½¸ ¥Ð¥¤¥È¥Ë¥Ã¥¯¥½¡¼¥È ºÇ½ª¹¹¿·¡§ highcalc 2010ǯ07·î25Æü(Æü) 14:43:05ÍúÎò Tweet °Ê²¼¤Î¼ê½ç¤ÇÍ×ÁǸò´¹¤ò¹Ô¤¦¤³¤È¤Ç¡¢¥½¡¼¥È¤¬´°Î»¤¹¤ë¡£ ¡Ö¾º½ç¡Ü¹ß½ç¤Î¥Ð¥¤¥È¥Ë¥Ã¥¯Îó¡×¤Ë¤¹¤ë¡£ 2^n�¥�¥�¥2^0´Ö¤ò¾º½ç¡Ê¹ß½ç¡Ë¤ÇÈæ³Ó¤¹¤ë¡£ ¥á¥ê¥Ã¥È ¤½¤ì¤¾¤ì¤Î¸ò´¹¤ÏÆÈΩ¤Ë¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¤Î¤ÇÊÂÎ󲽤¬ÍÆ°× ¸ò´¹²ó¿ô¤¬Í×ÁÇ¿ô¤Ç·è¤Þ¤ë¤Î¤Ç½ªÎ»È½Ä꤬ÉÔÍ× ¥Ç¥á¥ê¥Ã¥È Í×ÁÇ¿ô¤¬2^

    ¥Ð¥¤¥È¥Ë¥Ã¥¯¥½¡¼¥È - ¹â®²½¥×¥í¥°¥é¥ß¥ó¥°
  • 1