2006-07-01から1ヶ月間の記事一覧
test02 completed.
観戦する、といっておきながら、結局あれこれ書いています・・・ [id:lethevert:20060713:p2]のやつは、いくつかズルしているので、その辺について考察。 まず、どうしても気に食わないのは、 y p n = q 0 n where q c n | n == 1 = c = p (q (c+1)) nのガー…
せっかくなので、メモ化もしてみる。 先に作った構造をそのまま残したまま、関数 y をメモ化版に書き換える方針で。 まず、再掲。 f` y = y \e f n = if (n==1) (e 1) if (isEven n) (f (n/2)) (f (3*n+1)) g = f` y where y p = let q n = 1 + (p (const 0)…
不思議なバグが取れないなぁと思って、いろいろ考えていたら、int値がオートボクシングでObjectに変換されているところだった。 これは、はまるとはまるかも・・・
[id:lethevert:20060712:p2]コメント欄で指摘されました。 数学的には無限数列が収束するということにしておいて問題なさそうだけど、確かに問題文には従っていないです。 ただ、さすがに関数の呼び出し回数を何の仕掛けもなしに数えることは無理なので(Rub…
StdListに build_u _ 1 1 n181という命令を見つけて、はたと考える。 基本値をそのまま持つのは、レコード型だけだと暗黙で仮定していた。 以前は、CleanBasicを使っていたので、上手くいっていたのだけど・・・
本当はRound 2は観戦にしておこうと思っていたのだけれど、 http://idm.s9.xrea.com/ratio/2006/07/12/000484.html を見て、なにか挑戦された気がしたので、結局書いた。 何を挑戦された気がしたかというと、「問題を読み替えないで実装するためには、副作用…
そういえば、8queenって、まともに解いたことがなかったのではないかと思った。 で、解いてみた。 Start = show $ queens 8 show (n,as) = (show as,as) where show [] = "\n" show [a:ar] = "\n" +++ fill n a +++ show ar where fill n 0 = "*" +++ fill (…
http://www.unfindable.net/~yabuki/blog/2006/06/100sql.html そういう書き方もあるよね、ということで Start = filter is_prime [2..100] is_prime n = case filter is_divisor [2..n-1] of [] = True _ = False where is_divisor x = 0 == (n rem x)うー…
http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20040829#p05 http://www.cs.yale.edu/homes/tullsen/ 1996年に似たようなことをやっている人がいた。
データ構造というのは、結局のところ、一定の大きさの目印のないメモリ領域に書き込まれたビット列なので、何かしらの補助情報を与えてやらないと、意味のあるものとして扱うことができないのですが、 補助情報をどうやって与えるかについては、ソースコード…
fillh ARRAYの取り扱いを修正して、test01 completed
メタデータをたどれば取れる情報も命令の引数に渡していたり、同じようなことを行う命令がいくつもあったりする。 メモリ領域を直接操作する場合には意味のある引数なのだろうか? - あと、スタック操作の順序が明らかに合理的でない場合もある・・・ もっと…
buildh, fillhで、ARRAYというdescriptorが出現するが、これが配列の種類によらず使われている。 これは想定外。しまった。どうしようかな。
ListのNilにnullをプリミティブとしてあてることは可能だろうか?
レコード型対応のために始めたCleanJの構造変更の作業が、一段落ついた。 run_test01が通るようになった。ただし、下に書いた、ARRAYに関するところは未対応。
CleanNodeというクラスがある。CleanJの項グラフ書き換えのプレースホルダになる重要なオブジェクトなのだが、この定義はこのようになっている。 final class CleanNode { CleanDescriptor desc; Object data; }たとえば、整数型のデータなら、 final class …
http://www.salchu.net/blog/log/eid515.html フレームのことは置いておくとすれば、 そのリンクがどういうリンクかが記述できて、 (例) ページ内 サイト内 サイト外 ブラウザ側で、それぞれのデフォルト動作が定義できれば、target属性はいらないのかもと…
4.フィールドの直接アクセスと間接アクセス public final class A { public int[] is = new int[10]; public int is(int i) { return is[i]; } public void is(int i, int val) { is[i] = val; } } public final class Main { public static void main(Str…
レコード型の非ボックス化配列である。 前に、次のようなものを考えているということを書いたが、 class A { Object o; int i; } class A_array { Object[] os; int[] is; }これは効率が悪いことをに気づく。同じレコードの要素がメモリ領域内で連続しない。…
hiuchidaさんが詳細なテストを行ってくれました。 http://blog.goo.ne.jp/hiuchida/e/cf1c3e82d668cc21d6b6b1f71da217e1 処理系によっては、finalと非finalではっきりした違いがでることもあるようです。 # それにしても、IBMは群を抜いて速いですね
http://blog.goo.ne.jp/hiuchida/e/bc14f431bd8371bc97b5fdd8cb562685を読んで思った。 確か、JavaVMって、動的にクラスを生成して、動的にそれをロードすることも許してるよね。(JSPとかって、それを活用したものでしょ?) だとすれば、VM起動時(あるいは…
「痛い」とか言われてムと思ったので、一見バカバカしいチューニングでも決定的な意味があること「も」あるということを書いておこうと思った。 - 最近のハードウェアは早くなったといいながら、メモリアクセスは結構遅いというのを、最近どこかで話題になっ…
CleanJの話をしているときにも、このくらいの勢いでレスをつけてくれないかなぁ。
ばかばかしいと言われようが、無駄だと言われようが、納得いくまで調査するのが信条ですから。それに、効果がないことが分かるというのも、有意な結果です。 1.デフォルトコンストラクタと普通のコンストラクタ public final class A { String s0; String …
DIが分からない。 いや、分からないわけはない。 オブジェクト間の関係をコード以外のところに記述しておいて、動的に再構築するという手法のことだということくらいは理解している。 Delphiのdfmは一種のDIだということも説明されるまでもなく分かるし、そ…
言語仕様では、finalメソッドはinline展開できますよということでしかないということは分かりました。 でも、結局のところJavaは動的な言語なので、あるときfinalで宣言されていたとしても、その後リコンパイルされたとき(共通部分を別のjarファイルにして…
というわけで、次のようなところに気をつけると、実行効率のよいクラスの実装になるのではないかと思います。 class, methodをfinal指定(ないしprivateメソッド化)する -> メソッド呼び出しの効率化 クラス階層をObject直下におく -> 初期化処理の効率化 -…
JavaVMの起動が遅いのは、ライブラリが大きいせいなのではないかと考えて、起動時に読み込むライブラリを減らしてみる実験をした。 -Xbootclasspath:というオプションをつけると、VMの起動ライブラリを変更できるのだ。 読み込まれているライブラリは、「jre…
[id:JavaBlack:20060704:p2] あと、finalを付けられるところにはfinalを付けるというのは、別によい習慣とはいえないと思う。設計上finalであるべきところにfinalを付けるのは良い習慣といえるけど。