タグ

programmingとprofilingに関するpipeheadのブックマーク (52)

  • perl の Encode で find_encode は使えるのか?

    perl tips - Encodeを速く使う方法によると、find_encoding を使うと、Encode による文字変換が早くなるらしいということで実験してみました。 実験条件 use utf8 しない(use utf8 はトラブルが多すぎてやってられないので)。 変換前も変換後も utf8 フラグは立っていないこと。 実験用データとして、42KBのテキストファイル(EUC-JP, 日語半分ぐらい)を用意。 ソースはこんな感じです。引数に処理したい euc-jp のテキストファイル名を与えます。 use strict; use Benchmark; use Encode; use Encode::Guess qw(euc-jp shiftjis iso-2022-jp); my $euc = join('', <>); my $utf = $euc; Encode::from_to

    perl の Encode で find_encode は使えるのか?
  • エンコーディング変換の高速化 - odz buffer

    ref:404 Blog Not Found:perl tips - Encodeを速く使う方法 当然の話だけど、対象の文字列が長くなると、Encode::encode も、$e->encode も大差ない。 ちょっといじって試してみる。 use strict; use warnings; use Benchmark qw/cmpthese timethese/; use utf8; use Encode; use Jcode; use Unicode::Japanese; use Smart::Comments; my $str = join '', ( 'a' .. 'z', ( map { chr } ord('ぁ') .. ord('ん') ) ); $str = $str x shift if @ARGV; my $bytes = encode_utf8($str); my $u

    エンコーディング変換の高速化 - odz buffer
  • 404 Blog Not Found:perl tips - Encodeを速く使う方法

    2007年04月23日01:30 カテゴリLightweight LanguagesTips perl tips - Encodeを速く使う方法 はっきり言ってこれはフェアではない。 みかログ: ErlangとPerlの速度比較 Perl側は,Encodeが遅い. Encode::from_toがinplaceでコンバートしてしまうために,直前に文字列コピーがあるのも影響しているのかも なぜなら、Encode::from_to()は速度ではなく、安全性に最適化しているから。 そもそもはじめからUTF-8、それもutf8フラグがたっている文字列にfrom_toを使うのはばかげている。 for(my $i = 0; $i < 0xffff; $i++) { my $str2 = $str; Encode::from_to($str2, "UTF-8", "Shift_JIS"); } は単に

    404 Blog Not Found:perl tips - Encodeを速く使う方法
    pipehead
    pipehead 2007/04/23
    Encode::find_encoding()
  • JavaScript の for文のベンチマークを取ってみた | フッ君の日常

    前回のエントリーの続き。 「グダグダ言わずにベンチとってみればエエやん」ということで、JavaScript の for文のスタイルが、どんだけ速度に影響を及ぼすのかを調べてみた。 で、まずベンチマークのツール探しから。ググってみたら amachangさんの作ったベンチマークツールが見つかった。ありがとう、amachangさん! ありがたく使わせていただきます!! ということで、こんな感じでベンチマークを取ってみる事にした。benchmark({ test_a: function(){ var sum = 0; var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; for (var i = 0, l = arr.length; i < l; i++) { for (var j = 0, m = arr.length; j < m; j++) { for (va

    JavaScript の for文のベンチマークを取ってみた | フッ君の日常
  • Unicodeオブジェクトへの変換コスト - odz buffer

    unicode(s, enc) より s.decode(enc) が早くて decoder(s)[0] は もっと早いという話を聞いたので試してみた。 #!/usr/bin/env python # coding: cp932 from timeit import Timer import codecs decoder = codecs.getdecoder('cp932') setup = 'from __main__ import decoder' print Timer("unicode('日語', 'cp932')", setup).timeit() print Timer("'日語'.decode('cp932')", setup).timeit() print Timer("decoder('日語')[0]", setup).timeit() 結果 2.018347583

    Unicodeオブジェクトへの変換コスト - odz buffer
  • Perl正規表現「$& $` $'」のオーバーヘッド検証

    $&によるオーバーヘッドとは? perlfaq6によると **なぜ $&とか$`、$'といった変数を使うとプログラムが遅くなるのですか? プログラムのどこかでそういった変数が使われているのを見つけてしまうと、Perlはすべてのパターンマッチに対してそれに対処することをやらなければなりません。同様のからくりが、$1、$2などを使ったときにも行なわれます。このためすべての正規表現において、部分正規表現を捕捉するために同じコストがかかることになります。しかし、スクリプト中で $&などを全く使っていないのであれば、正規表現は部分正規表現を捕捉して不利になるようなことはしません。ですから、可能であれば $&や$'、$`を使わないようにすべきなのですが、それができないのであれば(一部のアルゴリズムはこれを使うのが便利なのです)、一度これらの変数を使ってしまったら好きなように使いましょう。なぜなら、罰金

    Perl正規表現「$& $` $'」のオーバーヘッド検証
  • XPathって速度的にどうなの? - takememo

    id:quaa:20060306#p1を見て、ループを回して要素にアクセスしたときに速度がどうなのか気になったので調べてみた。 スクリプト <html> <body> <script type="text/javascript"> function x(exp, type) { return document.evaluate(exp, document, null, type, null); } var result = {}; Function.prototype.time = function (s) { var func = this; result[s] = [0]; return function() { for (var i = 0; i < 10; i++) { var start = new Date().getTime(); var r = func.apply(thi

  • XML::Simple は遅い説における意外な落とし穴 (iandeth.)

    「XML::Simpleは処理速度が遅い」説といえばNDO::Weblogさんの記事 Perl で XML の処理はどれが速いかベンチ がすぐに思い浮かびます。初見した時はずいぶん感心した覚えがあり、以来、業務で XML::Simple を使う事に多少なりとも躊躇するようになったものです。そんな中、現在仕事で XML parsing with Perl な案件を受け、CPANにUPされている様々な XML 解析系モジュールの処理速度を計測しているのですが、その際気付いた、XML::Simple の意外な落とし穴についてまとめてみました。 目次: まとめ デフォルトで呼ばれるXML::SAXパーサーの確認方法 ベンチマーク比較 関連情報 まとめ だらだら説明するのもナンなので、いきなり結論から。XML::Simple は、デフォルトの状態だと XML::SAX がインストールされている場合、

  • iandeth. - Benchmark モジュールの使い方、結果情報の読み方

    仕事で Benchmark モジュールを使う機会があったので、使い方&結果情報の読み取り方をまとめてみました。基的には perldoc 読めばオールオッケーでしょ?と思っていたのですが、docs では結果情報の読み方についてはあんまり触れられていなかった為、ガッツリ補足してみました。 基 とある2種類のコードの実行速度を比較計測するには以下のようなソースを記述します: bench.pl #!/usr/bin/perl use strict; use warnings; use Benchmark qw(timethese cmpthese); sub hogeLoop1 { my $str; for my $i (1 .. 10000){ $str .= $i } } sub hogeLoop2 { my $str; for my $i (1 .. 20000){ $str .= $i

  • XML::Simple におけるパーサーの実行速度比較 - naoyaのはてなダイアリー

    XML::Simple は、どんな XML でも Perl のデータ構造に自動変換してくれるかなり便利なモジュールなのですが、中でツリーを解析したりいろいろやってるせいもあって、速度的にはあまり誉められたものではありません。以前に Perl で XML の処理はどれが速いかベンチ で比較したときには、随分遅いなという印象でした。 ただ、XML::Simple はその中で利用するパーサーを色々切り替えられるようになっています。じゃあそれを切り替えたら少しは速くなるんだろうかと気になってベンチを取ってみました。 XML::Simple は $XML::Simple::PREFERRED_PARSER に任意の SAX パーサーを指定するとそれを使ってパースするようになっています。 XML::LibXML::SAX XML::SAX::Expat XML::SAX::ExpatXS XML::P

    XML::Simple におけるパーサーの実行速度比較 - naoyaのはてなダイアリー
  • Perl でベンチマーク

    Perl でベンチマーク 2003-10-16-3: [Perl][Code] Benchmark パッケージの timethese でベンチマークが取れる. #!/usr/env/bin perl use Benchmark; $count = 1000; timethese($count, { '$a = $a . "a"' => sub { for ($i = 0; $i < 100; $i++) { $a = $a . "a" } }, '$a .= "a"    ' => sub { for ($i = 0; $i < 100; $i++) { $a .= "a" } }, }); 出力 Benchmark: timing 10000 iterations of $a .= "a"    , $a = $a . "a"... $a .= "a"    :  0 wallclock

  • その演算って遅くない?

    常日頃より「Pythonは遅い」と言われているわけですが、コードの書き方によってもずいぶん速度が異なるものです。 ここでは、私が実際に仕事で使っていて気づいたことを書きます。 浮動小数点数の2乗編 以下のコードを実行してみてください。 import time import math N = 1000000 a = math.pi def aa(): start = time.time() for i in xrange(N): a ** 2 t = time.time() - start print 'aa: Time= %f\n' % t return t def bb(): start = time.time() for i in xrange(N): a * a t = time.time() - start print 'bb: Time= %f\n' % t return t d