<   2009年 02月 ( 2 )   > この月の画像一覧

postgresql8.3.6にplperlを追加

centos5.2上のpostgresql8.3.6にplperlを追加。
ちと古いが
http://ml.postgresql.jp/pipermail/pgsql-jp/2002-November/011581.html
の記述に沿って作業を進める。
$./configure
$make
#make install

しかし
$createlangが通らない。「$libdir/plperlが存在しない」というようなエラーメッセージだ。
すったもんだやっているうちに「plpgsql」は「createlang」で通ることが分かった。

そこで、plpgsql.soの存在チェックをやったらひっそりと「/usr/lib/pgsql」にも隠れているではないか。
失敗覚悟で「usr/local/pgsql/lib/plperl.so」を上記のディレクトリにコピー。
「createlang plperl template1」で成功しました。
[PR]
by nora1962 | 2009-02-26 00:31 | PC

かな文字の小文字→大文字変換

tr/ァィゥェォャュョッァィゥェォッャュョヮヵヶぁぃぅぇぉ/アイウエオヤユヨツアイウエオツヤユヨワカケあいうえお/を実行するのにどのようにすれば速いか。(VBAで)

ネットで
http://pxp.seesaa.net/article/7500794.html
を見つけた。文字列サーチして変換する王道だろう。

一方、思いついたのはBASP21を使う手抜き。

Function Z(S)
Dim BOBJ As Object
dim i as long
Set BOBJ = CreateObject("basp21")
I = BOBJ.TRANSLATE("tr/ァィゥェォャュョッァィゥェォッャュョヮヵヶぁぃぅぇぉ/アイウエオヤユヨツアイウエオツヤユヨワカケあいうえお/k", S, Z)
End Function

これで比較したところ面白いことが分かった。
変換する文字列が短いうちは文字列サーチのほうが速い。
しかし、文字列長が長くなっていくと、その差は縮まり、20文字程度で逆転してしまう。
ネイティブコンパイル、中間コードに落とせる環境ならば違った結果が出るのだろうが、VBAではループ、文字列サーチは結構荷が重い処理なのだろう。

しかし、逆転するとはいえ20文字程度の変換ならば百万回のループ処理で15~30秒程度だから、実質上ボトルネックになることはないと思われる。
[PR]
by nora1962 | 2009-02-25 07:48 | PC