タグ

programmingとTipsに関するsnsn9panのブックマーク (9)

  • Pythonのfor文は遅い? - atsuoishimoto's diary

    bicycle1885.hatenablog.com こちらの記事を拝見していて、ちょっと気になったので注釈。 PythonやRを使っている人で、ある程度重い計算をする人達には半ば常識になっていることとして、いわゆる「for文を使ってはいけない。ベクトル化*1しろ。」という助言があります。 これは、PythonやRのようなインタープリター方式の処理系をもつ言語では、極めてfor文が遅いため、C言語やFortranで実装されたベクトル化計算を使うほうが速いという意味です。 昔からよくこういう言い方がよくされるが、当にPythonのfor文は遅いのだろうか。 聞くところによるとRのfor文はガチで遅いそうだが、Pythonの計算が遅いのはインタープリタ方式だからでも、for文が遅いからでもない。もちろん、Pythonはインタープリタなので遅いし、for文だって極めて遅い。しかし、これはPyt

    Pythonのfor文は遅い? - atsuoishimoto's diary
  • [Perl] my と local と our の違いについて - 竹迫の近況報告

    404 Blog Not Found:perl - myとourとscopeと みんな難しく考えすぎです。 (例外については後で考えることにして)とりあえず以下の基をおさえておけば混乱することはないと思います。 ■ our 宣言について our はグローバル変数をスマートに使用するための宣言です。our は use vars と等価と考えてください。 our $var; は use vars qw($var); と等価。 our $var = 1; は use vars qw($var); $var = 1; と同じ動きをするもの、と覚えておけばOKです。それ以上の違いは基的にないと考えて構いません。 ひとつ実用上の違いがあるとすれば、our は Perl 5.6 以降の built-in なのに対して、use vars は vars.pmPerlスクリプトで実装されています。し

    [Perl] my と local と our の違いについて - 竹迫の近況報告
  • Super Technique 講座~マクロの技

    質的にC言語はトリッキーな言語ではない。だから、トリッキーな技は特定機能に集中する傾向があり、そのような機能とは「マクロ」と「ポインタ」である。 引数展開マクロの小技 DRY原理とプロトタイプ宣言 グローバル変数管理 関数ポインタ配列のプロトタイプ宣言と定義 引数展開マクロの小技 一般論としては、マクロは define 文によって即値定数を記号定数で定義しなおす、というのが真っ当な技であるが、これは今更触れるほどの内容はない。それでも次のようなテクニックはある。 #define swap(type,a,b) {type tmp=a;a=b;b=tmp;} int x = 10; int y = 20; swap( int, x, y ); これは引数展開マクロを使って、いわゆるSWAPを実現する簡単なマクロである。よく類書にこれは「次のように使うと問題がある」とされる。 if( z )

  • Flashのメモリを制する5つの秘訣..|_level0.KAYAC

    こんにちは、新米FDのkoyuです。 今回のエントリーは世知辛い社会から魂の解放、いや、パンパンになったメモリの解放についてです。 ActionScript3.0でスライドショーなど動的に画像をロードするようなコンテンツを作成する場合に画像をロードし、removeChildしますよね? しかし、画像に対しての参照が残っていた場合に、読み込んだLoaderやDisplayObjectをremoveChildをしただけではメモリが解放されず、ガンガン膨らんできます。 その様はまるで我が国の国債の発行残高のようです。結果として挙動が悪くなったり、ブラウザが落ちたりします。 では、参照が残るとはどういうことでしょうか? 例として挙げられるのは ・addEventListenerをしている場合 ・変数に代入している場合 などです。 かく言う、私はハマってしまいして、その経験からエントリーを書いた次

    Flashのメモリを制する5つの秘訣..|_level0.KAYAC
  • Re: はてなブックマークのコンテンツの JavaScript を高速化する - つれずれなるままに…

    Reply to はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記 「重い箇所2:HatenaStar.js 1738 行目」で取り上げられていた Hatena.Star.Button.reateButton ですが、Flyweight パターンのアイデアと Element.cloneNode() を利用したところ、手元の環境(WinXP,Fx3.0)で7.7倍速くなったのでお伝えしておきます。 修正コード /* Hatena.Star.Button */ Hatena.Star.Button = new Ten.Class({ createdButton: {}, createButton: function(args) { var src = args["src"]; if (!this.createdButton[src]) { var newimg

    snsn9pan
    snsn9pan 2008/11/27
    firefoxのimg.srcが重い件についての対応策。
  • はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記

    はじめに 「新はてなブックマーク」になったということで、とっても便利になったのですが、ブックマーク一覧ページ*1が若干 JavaScript に時間が掛かっているみたいです。 というわけで 調査してみたいと思います。調査して、改善できそうなところは後で纏めて「はてなアイデア」にでも登録しようと思います。 この日記は調査しながら、過程を書いていくつもりです。 準備 まずは、人のサイトの JavaScript を書き換えて試してみるための環境を作ります。 作業用ディレクトリを作る とりあえず、ホームに HatenaJS というディレクトリを作ります。 $ mkdir HatenaJS $ cd HatenaJS CocProxy をダウンロードしてくる 以下から CocProxy というツールをダウンロードしてきます。 http://coderepos.org/share/wiki/CocPr

    はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記
    snsn9pan
    snsn9pan 2008/11/27
    hatenastart.jsを高速化する。firefoxでのimg.srcは重い。
  • はてなブックマークが重い件について、Page Detailerというツールを使って調べてみる - VTuberになったプログラマーの魂の残滓

    JavaScriptの部分は というわけでid:amachangに任せましょう。 というわけでそれ以外の部分でいったいどこが重いのか 何が重いの?ということで重たい箇所を分析していきましょう。 IBM PageDetailer 解析ツールとしてIBM PageDtailerを利用します。 alphaWorks Community 解説するよりも見てもらうほうが早いと思うのでさっそく使ってみるよ。 ちなみに上記ソフトのダウンロードにはIBMアカウント(無料)が必要なので、使いたい人は登録しよう! http://b.hatena.ne.jp/HolyGrail/ の結果 こんな感じのグラフが出てきます。 では、詳細を見てみましょう。 このグラフですが、長い部分が http://b.hatena.ne.jp/HolyGrail/ のHTMLそのもののロード時間になっています。 内訳としては 濃い

    はてなブックマークが重い件について、Page Detailerというツールを使って調べてみる - VTuberになったプログラマーの魂の残滓
    snsn9pan
    snsn9pan 2008/11/27
    はてブの高速化を考える。プロの視点はやっぱり違いますね。
  • ATLAS Japan C++ Course -- Lesson 2

    それぞれ表現できる数値の範囲と、有効数字の桁数が違います。10進法で言うと、単精度で約7桁、倍精度で約15桁、四倍精度で約33桁の有効桁数があると言えます。 指数部は例えば単精度の場合8ビットあり、2の256の範囲の数字を表しますが、非常に小さい数から非常に大きい数まで扱うために、真ん中の指数、この場合128が0乗を表すようにオフセットをつけます。 指数部は例えば単精度の場合23ビットですが、実は最上位に1が立っているとしてその下の23ビットを示していると考えます。指数部は1.0以上2.0未満の数値を表す訳で、必ず最上位は1です。このビットのことを隠れビット(hidden bit)と呼びます。 浮動小数点の演算は例えば足し算をする場合、指数が異なる場合、片方の仮数部を、指数部が等しくなるまでシフトした上で加算します。シフトされる部分の仮数部はシフトされた分だけ精度が落とされることになります

    snsn9pan
    snsn9pan 2008/08/26
    データ型でINT64_MAXとかを使う際には__STDC_LIMIT_MACROSを定義してあげる。
  • OOコード養成ギブス - rants

    Binstock on Software: Perfecting OO's Small Classes and Short Methods The Pragmatic Programmersシリーズの新しい、The ThoughtWorks Anthologyの中に 興味をそそるエッセイがある。Jeff Bayの"Object Calisthenics"だ。 これは良いオブジェクト指向の性質を実証する小さなルーチンを書く方法をマスターするための 詳細にわたるエクササイズだ。オブジェクト指向なルーチンを書く能力を向上させたい開発者がいるなら このエッセイに目を通すことを勧める。ここにBayのアプローチを要約してみよう。 彼は次にあげられる制約のもとに1000行のプログラムを書くことを勧めている。 これらの制約は意図的に過剰な制限となっているが、これは開発者を手続き的なやり方から脱却させるた

    OOコード養成ギブス - rants
    snsn9pan
    snsn9pan 2008/07/31
    練習でやる分にはこれくらいルールがあったほうが楽しい。
  • 1