雨谷の日和

過去20年で2,700を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

2004-04-01から1ヶ月間の記事一覧

JavaとCとの性能比較(行列式計算/再帰呼び出し有)Solaris版

2004.04.27付の「JavaとCとの性能比較(行列式計算/再帰呼び出し有)」と同じものをSolarisで実行した結果も実測してきたので、結果を掲載する。 UltraSPARC3:1.2GHzSolaris8(EUCJP)gcc2.95.3JDK1.4 CJava 最適化無最適化有インタプリタHotSpotAOT malloca…

JavaとCとの性能比較(ファイル出力処理)Solaris版

2004.03.27付の「JavaとCとの性能比較(ファイル出力処理)」での結果はWindowsXPでの結果だった。 今回、それと同じものをSolarisを借りて実行することが出来たので、その結果を掲載する。 UltraSPARC3:1.2GHzSolaris8(EUCJP)gcc2.95.3JDK1.4 CJava 最適…

印象の弱い文と短い文の組合せ

文の印象を弱める手法として「ひらがなばかりの文」「カタカナの多い文」「不必要に漢字の多い文」「アルファベットの多い文」などを見てきた。 私の今までの主張を元にすると、これらは長い文と同じような使い方ができるはずである。 例文12) 私は森に着…

JavaとCとの性能比較(行列式計算/再帰呼び出し有)

ということで、ここまでで再帰呼び出し有りの行列式計算での性能比較は一区切りとしたい。 出力処理の時と同じく、比較表にまとめておこう。 Pentium4:2.4GHzWindowsXP(MS932)cygwingcc3.3.1JDK1.4 CJava 最適化無最適化有インタプリタHotSpotAOT mallocall…

一次キャッシュの効果

2004.04.17付の日記で、以下のようなことを書きました。 これで分かることは、それが例えmallocで確保されたものであっても、メモリ領域にアクセスするだけなら特に性能劣化の原因にはならないということだろうか。 要するに、malloc/freeの処理そのものが遅…

Javaでの行列式計算(事前メモリ確保での実装/AOT)結果

では今度は2004.04.20付の事前メモリ確保での行列式計算のソースコードでAOTコンパイラを使った場合を実測してみよう。 昨日と同じようにコンパイル、実行した結果が以下である。 20:51:25 result: 489261678 20:51:35 result: 489261678 20:51:41 result: 4…

Javaでの行列式計算(動的メモリ確保での実装/AOT)結果

では、まず2003.03.31付で提示した、動的メモリ確保して行列式を計算させるソースコードをコンパイルし、実行してみよう。 コンパイルは以下のようにして行った。 gcj -o jtest.exe --main=Test Test.java gcj -o jtest1.exe -fno-bounds-check -fno-store-c…

JavaのAOTコンパイラ

さて、ちょっとここで比較項目を増やそうと思う。 いままでJavaについてはHotSpotでの最適化のみを取り上げて比較してきた。 しかしJavaでは実行時最適化のHotSpotの他にも、Cと同じような実行前最適化の技術の研究も為されている。 Ahead of time(AOT)コ…

アルファベットの多い文

通常、日本語の文でアルファベットを使う機会は少ない。 しかし、それも皆無というわけではない。 では、アルファベットの多い文について、その印象の強弱を考えてみよう。 例文11) Tom はMcDonald's でCheeseburger をtake out した。 おNyu- のPASOKON …

Javaでの行列式計算(事前メモリ確保での実装/最適化有)結果

2004.04.21と同じものを、こんどは最適化有りで実行してみたprofilegは、以下である。 result: 489261678 Flat profile of 7.62 secs (487 total ticks): main Interpreted + native Method 0.2% 1 + 0 java.util.jar.Attributes.read 0.2% 1 + 0 Total int…

Javaでの行列式計算(事前メモリ確保での実装/最適化無)結果

では、2004.04.20のソースを最適化無しで実行してみよう。 result: 489261678 Flat profile of 81.38 secs (5208 total ticks): main Interpreted + native Method 99.4% 5179 + 0 Test.expand 0.0% 0 + 1 java.util.zip.Inflater.inflateBytes 99.5% 5179 +…

Javaでの行列式計算(事前メモリ確保での実装)

それでは、Javaでも事前にメモリを確保してから処理を行うように書いてみよう。 以下のようになる。 class Test { private static long[ ][ ] array_buf; private static long expand(long[ ] array, int dim) { if(dim 次回と次々回をかけて、最適化無/有の…

不必要に漢字の多い文

ひらがなばかりの文やカタカナの多い文は読み難いと書いたが、では不必要に漢字の多い文はどうだろうか。 例文10) 刀馬は西洋焼き饅頭屋から発酵牛乳入り牛挽肉西洋焼きを持ち出し購入した。 新規購入の個人用自動計算機に基本操作補助仕組「窓」を挿入設…

Cでの行列式計算(事前メモリ確保での実装)結果2

2004.04.16付け付のソースの、mallocの部分をallocaに変えてコンパイルし直し、同じようにして実行してみた。(freeの行も削除した) 結果は以下である。 20:16:26 result: 489261678 20:16:32 result: 489261678 20:16:37 result: 489261678 20:16:41 resul…

Cでの行列式計算(事前メモリ確保での実装)結果

2004.04.16付のソースを実行してみた。 20:13:14 result: 489261678 20:13:20 result: 489261678 20:13:25 result: 489261678 20:13:29 result: 489261678 20:13:32 result: 489261678 20:13:35 最適化無しで約5秒、最適化有りだと約3秒という結果である。非…

Cでの行列式計算(事前メモリ確保での実装)

malloc/freeでの動的なメモリの管理に負荷がかかる(そしてこれはkp氏の指摘にあるように、必要な負荷である)ことから、高速化のためには、必要なメモリ領域を事前に確保しておくと良さそうだということが分かった。 ということで、事前にメモリを確保する…

Cでの行列式計算(allocaでの実装)結果

では、2004.04.14付「Cの行列式計算(allocaでの実装)」で示したソースコードをコンパイルし、実行してみよう。 20:56:28 result: 489261678 20:56:36 result: 489261678 20:56:44 result: 489261678 20:56:48 result: 489261678 20:56:52 result: 4892616…

Cの行列式計算(allocaでの実装)

kp氏の指摘では、gccの可変長行列の実装はallocaでの実装に近いはずだというだった。 なのでまずはその検証を行っておこう。 以下のように、mallocでのメモリ確保部分をallocaに変える。この場合、freeでの解放処理は必要ない(allocaの場合、スタック領域に…

カタカナの多い文

カタカナの多い文は、読み難いという説がある。 実際にはどうだろうか。例文にしてみよう。 例文9) トムはマクドナルドでチーズバーガーをテイクアウトした。 おニューのパソコンにウィンドウズをインストールした。 動詞までカタカナにするのはかなり強引…

Cのmalloc/freeは遅い

2004.04.11付けで、Cのmalloc/freeよりもgccの可変長配列の方が速いということを書いたところ、kp氏がその理由を調べた結果を書いておられます。→「メモリ動的確保」 をを〜。適切な情報源と明快な結論で、とても参考になりました。素晴らしい。 ということ…

Cの動的メモリ確保が遅いのかも

2004.04.03〜2004.03.06までの結果で、行列式の計算(ソースコードは2004.03.31と2004.04.02で提示)を比較したところ、CよりもJavaの方が速いという結果となった。 その結果について色々と考えたのだが、一つの可能性として「Cは動的メモリ確保が遅いので…

句読点の歴史

2004.04.09付で私は「日本語の読み物の句読点の歴史」について「調べてみるのも面白い」と書きました。これについて牛男爵氏から「句読点案でググりましょう」との指摘を頂きましたので、早速ググってみました。 なるほど、句読点が使われるようになったのは…

句点も読点も無い文

半茶氏から、文の短長の話について感想を頂いています(040329付)。有難うございます。 以下、私として興味を引かれた部分をコメントしたいと思うのですが、頂いた文はテクニカルに長く書かれているので、該当箇所については文の一部分を切り出す形で引用さ…

文脈の中で生きてくる短い文

ろずまりん氏が「文中に登場する短いもの」ということで事例を挙げておられます。 大変参考になるお話だと思いました。 「MEMO」の2004/4/3(土)から引用します。 「あ!」「あっ」「あ?」「ああ……」のようなものを単独で取り出すと意味がわかりませんが、…

プロファイラの重要性

kp氏が2004-04-03付の「補足」で、思うところを述べられている。 kp氏の意見を私なりに解釈するなら「大抵の言語は大抵のプログラムが要求する性能を実現できる。だから、言語の選択で実行性能を重視する場面はあまり多くない」ということになるでしょうか。…

Javaでの行列式計算(最適化有)

では、昨日と同じ処理を、こんどは最適化有りで実行してみる。 java -Xprof Test 結果は以下のようになった。 result: 489261678 Flat profile of 8.88 secs (541 total ticks): main Interpreted + native Method 0.2% 0 + 1 java.util.zip.ZipFile.open 0.…

Javaでの行列式計算(最適化無)

では、Javaの場合の行列式計算を実行し、そのprofileを見てみよう。 まずは最適化無しで実行してみる。 java -Xprof -Xint Test 結果は以下のようになった。 result: 489261678 Flat profile of 90.10 secs (5728 total ticks): main Interpreted + native M…

行列式計算ではなかったようです

2004.04.01に書いた「再帰呼び出しだとJava も C もたいして速度に差はない?」について、屁理屈太郎氏からコメント頂いています。→「へけ」の4/4 いつも有難うございます。 ご指摘を読みましたところ、どうやら、私が勘違いをしていたようです。以下引用し…

Cでの行列式計算(malloc/freeでの実装)の結果

2004.04.02付けの「Cでの行列式計算(malloc/freeでの実装)」のソースコードを用いてその実行に掛かる時間を測ってみる。 なお、実行環境は以前と同じでPentium4:2.4GHz + WindowsXP + cygwin + gcc3.3.1 である。 最適化の深度の違いも考慮したいので、コ…

Cでの行列式計算(malloc/freeでの実装)

kp氏に指摘頂いたので、2004.03.30のソースをmalloc/freeでの実装に書き換えてみた。有難うございます。 #include #include long expand(long array[], int dim) { int i, j, k, l; long value = 0; long *subarray; if(dim malloc( (dim - 1) * (dim - 1) *…