Home › Blog Archives

仕事ちう

に日記更新するってのも、何か変な感覚ですね。あ、今ちょっと集中しすぎで気持ち悪くなったんで休憩中です。もう少ししたら飯食いに行きます。

そして他に書くことはないっていう。シカタナイネ。

風邪

いやぁ、久々に風邪引きました。前の会社辞めて、不特定多数の人間が出入りするところに行かなくなったから、ウイルスとか細菌とかに感染しなくなったと思ってたんですが。
なわけで、昨日は一日布団の中でぐったりしてました。母者の会社から任された仕事も出来ず。
でもついさっきから活動再開できたので、そろそろから仕事しようかと思います。

本当はリズム的に昨日日記をつけるはずだったんですがね。まあ、寝てるだけじゃネタがあるはずもなし、今日にずれ込んだということで。
しかし、仕事始めた途端求職サイトからスカウトメールやら何やらが来るわ来るわ。タイミング読めっての。
今のところ二つほど来てるわけですが、一つは蹴って、一つは様子見と行きましょうか。
少なくとも今後3年間は、在宅以外でやる気ありません。なので、在宅以外の仕事はかたっぱしから蹴ります。
プログラミングなんて、コンパイラの入ったPCがありゃ何処でだって出来るんだから、俺の心が一番平和な場所で仕事するのがいいに決まってます。
そんなわけで、今在宅で仕事をしているわけです。

このまま母者の会社の外部顧問になりそう。気象予報士の資格取るのだって、母者の会社のためなわけだし。

PerlとJavaの恐るべき速度差

いやこんな時間に何やってんだよと思われるかもしれませんが、居ても立ってもいられなかったので。

先ほど、うふふさんに尋ねられていた「4,632,097までの素数の個数」について、指定した数までの素数の個数を求めるスクリプトを作っていたんですよ。
最初はPerlで作っていたんですよ。Perlのバッチは手軽に作れて手軽に実行できるから、割と重宝しています。
ロジックとしては単純で、指定された数までループを繰り返して、それまでに出現した素数で割り切れるかどうかを確認する、というものです。
これは後になればなるほど飛躍的に計算量が上昇するのですが、計算のステップを2ずつにしたり、割り切れるか判定する素数を対象の数の半分(本当は平方根が良かったんですが、Perlでの平方根の求め方が分からなかったので)までにするなど、ループ回数を少なくする工夫をしました。
しかし、これだけやったにも関わらず、Perlでは30分以上かけても計算を完了することが出来ませんでした。
そこで、以前検証してPerlよりもメモリを使用する代わりに計算速度の速いということが分かっているJavaで組みなおしてみました。JavaではMathクラスを使うことで平方根が簡単に求められるので、そこの改善も込めました。
すると、Perlで30分かけて終わらなかった計算が、ほんの数秒で完了してしまいました。
以前PerlとJavaで速度検証をしたときにも思ったことですが、Javaの計算速度は半端ないです。
Cの方がさらに早い計算速度になるとは思われますが、Javaほど手軽にバッチを作れないので、手間と計算速度の釣り合いが取れているのはJavaだということが出来ます。
速度を改善したいというなら、Javaに手を出すのも手段の一つのようです。

あまりにも劇的に違いが出たため、興奮してつい日記に記してしまいました。
ちなみに、「4,632,097までの素数の個数」は324,538個でした。

+追記+
デスクトップでPerlのロジックをJavaと同様の改善を施して速度比較を行ったところ、Perlでは40秒、Javaでは535ミリ秒の実行時間がかかりました。差が出過ぎだろ常考。
あとオラクルJDKのダウンロードにアカウント登録が必要とか改悪勧めるのマジでやめてほしい。そこまでして自社製品を売りたいかと軽くなく引く。