2009-09-01から1ヶ月間の記事一覧

N-QueenをXSを使って実装してみた

とりあえず実装してみたまずは Makefile.PLの作成 use strict; use ExtUtils::MakeMaker; WriteMakefile ( NAME => 'Solver::NQueen::XS', VERSION_FROM => 'lib/Solver/NQueen/XS.pm', );次にモジュールファイルの作成. モダンPerl入門のまま. package Solv…

XSを初めて使ってみるための下準備

とりあえず簡単そうな例で性能に差が出そうなものということで NQueenを実装してみた. 仕事が忙しいため本日は Perlバージョンのみ. Mooseを使ったので, それのオーバヘッドもいくらか出ているかもしれない けど, 時間のかかるプログラムなので考慮する必要…

auto_deref

いろいろな人の書いた Mooseを使ったコードを見ていたら "auto_deref"というのがあった。 名前の通りなんですが、マニュアルを見ると ArrayRefとHashRefを自動でデリファレンスされる というものみたいですね。 foreach my $str ( @{$sample->array} ) { do_…

追記

qsortの引数に渡す比較関数には以下のような方がいい。 単純な引き算だと, bが INT_MINで aが正の数だったらオーバーフローするため static int compare(const void *a, const void *b) { int num1 = *(int*)a; int num2 = *(int*)b; if (num2 > num1) { ret…

極力遅いソーティング

プログラミング作法という本に極力遅いソーティングをしろという問題があったので それを実装してみた。当然ながら適当なループで時間稼ぎとかはなしで、答えを求めるのが 遅いというものね。 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <sys/time.h> static void late_sor</sys/time.h></time.h></stdlib.h></stdio.h>…

ファイル名抽出

http://example.com/hoge/fuga/sample.jpgみたいのがあったときに, sample.jpgを抽出する方法. File::Basenameの basenameが使えね〜だろって勝手に思っていて 以下のようなものでやっていた。 my $hoge = "http://example.com/hoge/fuga/sample.jpg"; ($fil…