[Anthy-dev 2249] Re: r5rs: misc fixes & enhancements

Zurück zum Archiv-Index

Kazuki Ohta mover****@hct*****
2005年 8月 21日 (日) 20:50:54 JST


太田です。

頂いたパッチはr1267でコミット致しました。

# このパッチのどこが影響したのかは分かりませんが、ひらがな入力は出来るように
# なりました!漢字入力をするとmap_eval -> eval -> map_evalと無限ループに
# 陥るっぽいですが。

> operations.c と datas.c で、TODO 潰しと、バグ潰し、ついでに「ここはこう
> した方がストレートなんじゃないか」という箇所の変更、をしています。
> これで 2/3 ぐらい。おもな変更箇所は、
> * datas.c
>   - (add_heap, allocate_heap) memset の除去と条件判定のループからの追い
> 出し →観測できるほど速くなりませんでしたが…
> * operations.c
>   - 四則演算の脱 FUNCTYPE_2N 化。意外かも知れませんがこれは現時点では速
> 度は *低下* しています。これは FUNCTYPE_L しかないためで、一つずつ eval
> してそのまま使えばいいのに、map_eval() がいちいち引数の数だけ cons して
> くれてるためだと思われます。これらの関数や append などは、多分
> FUNCTYPE_RAW_LIST なり FUNCTYPE_RAW_ARGS なりを導入すれば速度は向上する
> はず。コードサイズは肥大化しますが。いずれにしても早いとこ FUNCTYPE 整理
> してくれませんかねぇ… (と、プレッシャーをかけてみる
>
>   - (ScmOp_equal) 演算子の引数チェックの順番が逆。
>   - 比較演算子の関数の名前が逆。普通 > が「大なり」でしょう…あと多分数値
> の大小をいうときは "greater than", "less than" の方が一般的だと思いま
> す。*思います*。R5RS にあるとおりに [non]increasing, [non]decreasing で
> もいいかも知れませんが。
>
>   - max, min の中間生成物を排除。
>   - (ScmOp_number_to_string) radix を実装。っていうか前に uim-db のため
> に siod 用に書いたやつを引っ張ってきただけ。string->number も、strtol()
> で簡単に実装できそうなんですが、string オブジェクトのもってる文字列デー
> タは NUL-terminated と仮定して良いんでしょうか。copy-on-write shared
> string ができなくなりますが。
>
>   - (ScmOp_string_to_number) atof → atoi (多分こっちの方が速い)
>
>   - (ScmOp_c_length) 多分最初の if 文は無駄。
>
>   - (ScmOp_append) append はもらったリストを破壊してはいけません。(テスト追加)
>
>   - (ScmOp_reverse) listp 排除。
>
>   - (ScmOp_listtail_internal) なんて schemer なコードなんだ! と思ってし
> まいました。(笑) ループに変換。
>
>   - (ScmOp_memq) 冗長なテストを簡略化
>   - (ScmOp_assq, ScmOp_assv, ScmOp_assoc) STRICT_R5RS 時に非
> alist の チェック
>   - (ScmOp_symbol_to_string, ScmOp_string_to_symbol) エラー処理、コピー
> 処理の簡略化
> * test/bigloo-list.scm
>   ヤマケンさんの eq? hack で通らなくなったテストがあったので一時的に変更
> * test/io.scm
>   前よりちょっと親切に。(笑)
> * test/test-list.scm
>   append のテスト追加。
> * test/unittest-bigloo
>   引数を xcons
>
> ちなみにヤマケンさんの比較関数周りの commit とかと一部競合するかもしれません。

-- 
-------------------------------------------------
Kazuki Ohta : mover****@hct*****
-------------------------------------------------


Anthy-dev メーリングリストの案内
Zurück zum Archiv-Index