雨谷の日和

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

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

Javaでの行列式計算

昨日掲示したCのソースでは可変長配列を使っていたのだが、kp氏から可変長配列は拡張機能なので、malloc/freeを使ったものに書き換えた方が良いという指摘を頂いた。有難うございます。 近日中に、書き直してみようと思う。 とりあえず本日は、Javaの方のソ…

Cでの行列式計算

もう一ヶ月も前のご指摘で、私の歩みの遅さに愕然としてしまうのだが、屁理屈太郎氏の指摘「Java と C」にあった、以下の部分を参考にして、行列式の計算でCとJavaの性能比較を行いたい。 できれば、「とにかくループをまはす」とか「行列式の計算をさせる…

ひらがなばかりの文

ということで今後は、文の印象を弱める手法をつらつらと挙げていこうと思う。 まずは、ひらがなばかりの文を見てみよう。 例文9) わたしはもりについた。 きぎのみどりがまぶしい。 かぜではおとがゆれる。 ひらがなばかりの文は、意味の把握にやや時間が…

意味の通じないほどに短い文

半茶氏の日記の2004.03.28付けの記述で、ここの2004.03.18付けの「短い文と長い文の使い方まとめ」に言及があった。有難いことである。 以下、引用してコメントしたい。 書く時には様々な形式を選ぶことが出来る。それをいちいち書き出すと文章読本になるの…

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

ということで長々とかかってしまったが、ファイル出力処理におけるJavaとCとの性能比較はここまでで一区切りである。 まとめておこう。 Pentium4:2.4GHzWindowsXP(MS932)cygwingcc3.3.1JDK1.4 CJava 最適化無最適化有最適化無最適化有(*3) Encode無Encode…

Javaの文字列出力(バッファリング有/最適化有)

前回と同じ処理を、最適化有で実行してみよう。 Flat profile of 6.16 secs (394 total ticks): main Interpreted + native Method 1.0% 0 + 4 java.io.FileOutputStream.writeBytes 0.3% 0 + 1 java.util.HashMap.put 0.3% 0 + 1 java.security.BasicPermis…

Javaでの文字列出力(バッファリング有/最適化無)

Javaの文字列出力でバッファリングを行うには、BufferedWriterを使えばよい。 以下のようになる。 import java.io.PrintWriter; import java.io.BufferedWriter; import java.io.FileWriter; class Test { public static void main(String[] args) throws Ex…

印象の弱い文を書くには

では、印象の弱い文を書くにはどうすればいいのだろうか。 印象の強い文の逆を考えるなら「意味が通じないように」書けば良さそうだ。 無駄に長くしても良いし、意味を捉え難い書き方を心がけても良いだろう。 そう考えると、今までは印象の弱い文として長い…

印象の強い文を書くには

これまで「短い文」と「長い文」という分かりやすい基準でその使い方のバリエーションを見てきた。 しかし、実際には長い短いよりも、文の印象の「強い」「弱い」のコントロールの方が重要だと私は思っている。 短い文・長い文というのは、印象の強弱の一つ…

入出力処理のCとJavaの性能比較のまとめ

今までに測ってきた結果を、表にまとめておこう。 Pentium4:2.4GHzWindowsXP(MS932)cygwingcc3.3.1JDK1.4 CJava 最適化無最適化有最適化無最適化有(*3) Encode無Encode有Encode無Encode有 出力(*2)バッファ無 161617153(*1)177(*1) バッファ有 559?4? ※単位…

Cでの出力(バッファリング無)

ということで、バッファリング無の場合のCのものを実行してみよう。 #include int main(void) { int i; FILE *out; const char buf[] = "Hello world!\n"; out = fopen("c_log.txt", "w"); setbuf(out, NULL); for(i = 0; i 結果は、以下のようになった。 2…

Cでのバッファリングの注意点

昨日「Cでのバッファリングの効果が見られなかった」という主旨のことを書いたところ、早速jzkey氏からご指摘頂きました。有難うございます。 早速、調べてみました。 →参考:「Manpage of SETBUF」 以下、頂いた3点の指摘について個別に書きます。 1) Cの…

Cでのバッファリング

Javaでバッファリングをした場合の出力と比較するために、Cでバッファリングした出力の場合も見てみよう。 ※以後、比較にはfputsを用いる。また、念のためにメッセージもconst char[]にした。 #include int main(void) { int i; FILE *out; char buffer[819…

短い文と長い文の使い方まとめ

ここまで見てきた、短い文と長い文の使い方ごとの特徴を、表にまとめてみた。 あくまでも私の感じ取り方に依存する問題だが、参考にはなるかも知れない。 使い勝手特徴 短い文のみ△鋭い緊迫 短い文が最初○論旨明確 短い文が中頃△違和感挿入 短い文が最後○終…

Javaでのバイナリ出力(バッファリング有/最適化有)

バイナリ出力にバッファリングを適用したものを、今度は最適化有で実行してみよう。 結果は以下である。 Flat profile of 3.92 secs (250 total ticks): main Interpreted + native Method 0.4% 0 + 1 java.io.WinNTFileSystem.getBooleanAttributes 0.4% 0 …

Javaでのバイナリ出力(バッファリング有/最適化無)

バイナリ出力にバッファリングを実装するにはBufferedOutputStreamを用いる。 具体的には、以下のようになる。 import java.io.FileOutputStream; import java.io.BufferedOutputStream; import java.io.OutputStream; class Test { public static void main…

文字列出力とバイナリ出力の違い

文字列出力よりもバイナリ出力の方が速いだろうと思っていたが、最適化した場合には結果が逆になってしまった。 これはどういうことだろう。 Profileを見比べても、明らかにバイナリ出力の方が処理が単純で、速くなりそうな気がする。 一方の文字列出力は多…

JDK1.3のリリース時期について訂正

この日記の2004.02.28付けの「Javaの実行時最適化の効果」について、JDK1.3のリリース時期について間違っていましたので訂正しました。

長い文を中頃に置く

長い文を中頃に置くと、それは文章全体に厚みを加える。 最初に置かれた短い文の詳細を説明し、最後に置かれた短い文へ文脈を繋いでいるように見えるからだ。 例文8) 私は森に着いた。 その森の一部分一部分を互いに絡み合うようにして織り成している木と…

長い文を最後に置く

長い文を最後に置くと、その文の印象はほとんど無いのと同じになる。 前の短い文の印象の強さに掻き消されるからだ。 例文7) 私は森に着いた。 木々の緑が眩しい。 そんな中を時折吹き抜けていく風は穏やかな温かさを多分に含み、それは木々の枝葉を優しく…

性能比較について注意すべきこと

屁理屈太郎氏から性能を比較するときに注意すべき点を教授頂いています。とても有難いことです。→「プログラム言語の速度比較について」 頂いているご意見について、今のところの状況を書いておこうと思います。 ※以下、枠内は屁理屈太郎氏の日記からの引用…

Javaでのバイナリ出力(最適化有)

Javaではその仕様上必須となる文字コード変換が実行速度の低下の原因であるという結論から、前回は文字コード変換無しの出力を実際に実行してみた。 その結果は予想通りだったわけだが、こんどは同じ処理について実行時最適化を行った場合を見てみよう。 Fla…

Javaでのバイナリ出力(最適化無)

文字コード変換を行わせないような強引なコーディングをJavaで行ってみて、実際にどうなるかを見てみよう。 通常こうした形で文字列を扱うことは、Javaでは推奨されていない。今回は比較のための特殊な場合だと思って頂きたい。 import java.io.FileOutputSt…

長い文を最初に置く

長い文を最初に置くと、なんとなく据わりが悪い。 何が言いたいのか曖昧なところへ、印象の強い短い文が続くので、ますます印象が弱くなるからだ。 例文6) くどくどと歩き回った挙句に散々遠回りをしたことに気付いた頃、ようやくにして私こと長戸浜次は目…

Javaは文字コード変換の分だけ遅い

今までの実行Profileを見ると、文字コードの変換にかなりの時間がかかっていることが分かる。 以前にも書いた通り今回の検証はWindowsXP上で行っているから、ファイル出力をする際にJavaの内部文字コードからShift_JISへの変換を行っている。その負荷が高い…

短い文を中頃に置く

短い文を中頃に置くと、前後の文に埋もれて印象が弱まる。 伏線の効果を得る場合などに有効である。 例文5) くどくどと歩き回った挙句に散々遠回りをしたことに気付いた頃、ようやくにして私こと長戸浜次は目的地の中間点である森の入り口と思しき場所に足…

Javaの実行時最適化の詳細

こんどは、実行時最適化をした場合のProfileを見てみよう。 Flat profile of 7.46 secs (458 total ticks): main Interpreted + native Method 1.3% 0 + 6 java.io.FileOutputStream.writeBytes 0.2% 0 + 1 java.util.jar.Attributes.read 0.2% 0 + 1 sun.io…

短い文を最後に置く

短い文を最後に置くと、先に書かれた文を総括しているように見える。 印象の強い短い文が、印象の弱い長い文の方向性を決定しているように見えるからだ。 例文4) くどくどと歩き回った挙句に散々遠回りをしたことに気付いた頃、ようやくにして私こと長戸浜…

何故Javaは遅いのか

実行時最適化を行わないJavaの遅さは、驚異的なものだった。 では何故、そんなにも遅いのだろうか。 もう一度、Javaが遅い理由として挙げられているものを振り返ってみよう。 実行時のエラーチェックの厳密さ VM(バーチャルマシン)という仕組み 最適化の不…

アメリカの漫画事情

日本の漫画作品がこのところ、海外で評価され始めているというのは本当らしい。 週刊少年マガジンに連載の「ネギま」の作者のサイトの日記で、そんなことを思わせる一幕を垣間見ることが出来た。 日記帳より2/22付の一部引用: アメリカ版の「ネギま」の修正…