見出し画像

Julia: ループ処理が早い、って本当?

半年くらい前から Julia を試しています。その理由は for ループ処理が本当に早いのかどうかを確かめるためです。

元々会社で使われているプログラムは 1990 年代に Visual Basic 6 で書かれたものでした。その VB6 のプログラムを騙し騙し使い続けておりましたが、数年前に会社の PC 全てを Windows 10 にした時点でそれらのプログラムが走らなくなり、代替え言語として R で書き直しました。R は (私のような) 素人のプログラマーにとって使い勝手が良いのですが、for ループを使った処理の遅さが最大の欠点でした。

ただ今までであればその処理スピードでも十分対応できたのですが、ここに来て処理するデータが 1000 倍以上に膨れ上がり、とても R では対処できなくなってしまいました。

推定ではありますが、VB6 でこの量のデータを処理するとおよそ 6 時間で完了したのですが、R は 32 時間走らせても終了しませんでした。そこで Julia 登場です。

前述のプログラムの一部を抜粋し、R と Julia で書いたプログラムの処理速度を比較しました。

 - R:   約 40 秒
 - Julia:  約 2 秒
 - VB6: (うろ覚えですが) 15 秒

この時点で Julia、最高!と感嘆、早速 Visual Basic.NET で書かれた他のプログラムの一部を Julia で書き直し、処理速度の比較を続けたのですが、結果は予想とは違ったものとなりました。

 - VB.NET 約 15 分
 - Julia:   約 40 分
 - R:         約 60 分

VB.NET は Microsoft がサポートを行なっていますから、無理して Julia で書き直す必要が無いことになります。結局 Julia のループ処理能力の実力はいかほどなのか、あるいは Julia のプログラムをどのように書き換えれば速度が上がるのか、この辺りの情報が欲しいところです。

蛇足 1: 私の勤め先はアメリカにある林業会社で、業務は森林管理に関するものです。外注して C や Java などで書いてもらうほど複雑なプログラムではありませんし、自前のプログラマーを雇用するほどプログラミングの需要が社内にはありません。そのため本来はプログラマーでは無い私のような者が業務の一環として行なっています。
蛇足 2: 真偽は不明ですが、私の前任者で元々のプログラムを書いた人に言われたのは、VB6 の処理速度は明らかに VB.NET よりも早かった、とのことです。

この記事が気に入ったらサポートをしてみませんか?