メッセージ。 - 具体的なこともしてますょ!

# 具体的なこともしてますょ!

抽象的で情緒的な日記ばっかり書いてたらいかんなーと思い中。
だって、毎日まいにちそんなのばかり読んだり書いたりしてたら、頭おかしくなるよ。
それになんか、あざといし。
つーことで、具体的な何かを出したくて一応手は動かしているんだけど、
なかなかうまくいかないっすねー。

たとえばいまは、

(time (let loop ((count 6502) (out '()))
    (if (= count 0)
        (reverse out)
        (loop (- count 1) (cons count out)))))

というコードをZaurusで動かして、「なんで0.1秒もかかるんやろ?」とか
悩んでいます。「(cons count out)」の部分を「out」にすれば、
0.05秒で実行できちゃうのです。

やりたいことは、Wikiページレンダリングの高速化。
レスポンスタイムを0.5秒以下にしたいんですけどねー。
consって案外重いんやろか……。consするときのメモリアロケート(メモリアロケートしてるとして)が重いとか?
うーんうーん。まーそんな日々ですねー。
2006-05-22 18:14:25 / ふじさわ / Comment: 2 / Trackback: 0

Comment

#

Gaucheではconsは例外なくアロケートします。ものすごくスピードセンシティブなところではアロケートは避ける方がいいでしょうね (アロケート自体は速いんですが、GCに時間がかかるようになるので---とくにメモリアクセスが遅いアーキテクチャでは)。

試しにreverseをreverse!にしたらどうなりますか。

2006-05-23 04:00:32 / shiro / Comment: 0 / Trackback: 0

#

いつもご助言ありがとうございます。
アロケート自体は速いけどGCに時間がかかるというのは、イメージに近かったみたいでうれしいです。なるほどそうなんですねー。

なお、reverseをreverse!に変えてみたら、0.01秒で実行できました!
実際にはconsが重かったというより、reverseでメモリを食っていたということでしょうか。(というか、ソースを読めという話ですが)
面白いですねぇ。
2006-05-23 11:00:19 / ふじさわ / Comment: 0 / Trackback: 0
コメント投稿機能は無効化されています。

Trackback

TrackBack投稿機能は無効化されています。