博士課程での研究やソフトウェア開発の話とかを,思いついた時につらつらと書いています


Programming::Perl - XSで高速化


E-mail this post



Remember me (?)



All personal information that you provide here will be governed by the Privacy Policy of Blogger.com. More...



大学の実験プログラムをPerlで書いているのですが、
さすがに三日以上もかかるプログラムだと高速化したくなってきます。

数式の処理が重いのかなーとプロファイリングも行わずに、
高速化を試み始めました。
Pure Perlレベルだったらやれることはやったような気がしていたので、
XSに手を出すことにしました。
まぁ具体的にはInlineモジュールを使って
数式処理の部分だけCで書いたりしたのですが。

PerlとCの間の架け橋処理が非常に面倒ですね。
なんなの、SVて。
それがPerlの、何でも入る構造体なんでしょうけどね。
で、sv_2mortalっていうのがさっぱり分かっていなかったんですが、
これやっておかないとメモリリークを引き起こすそうですね。
確保済みの領域を、sv_2mortalで揮発性にするんだとか。
…ここ5日ほどマシンを文回しながら、ページングサイズが1.4GBとかになっていまして。
Perlが保有しているメモリが880MB程行ってたんですよね。
もしかして確保したメモリを揮発性にしてなかったから?
という不安がちょっとよぎりました。
でも実験が3/4ほど終了したとこなんで、
今とめたくないんですけどね。

途中から処理を再開できるようにプログラムを変更すれば済む話なんですが。
Perlの中にCを入り込ませるのは、なかなか色々知識が必要ですね。

Labels: , ,

0 comments:

Post a comment

Links to this post:

Create a Link

About me

  • I'm mikken
  • From Japan
  • 学生の頃は博士課程で感性情報処理の研究をやっていました。今はベンチャー企業でWeb系システム、看護管理系システムを開発しているSEやってます。
  • My profile

Twitter

Previous posts

Archives

Links


ATOM 0.3