i18n
ご多分に漏れず、キャッシング(デコードしたUCS32/WSJIS/other文字列をキャッシュ)に伴う消費メモリ量と実行速度のバランス取りに悩む。現状はキャッシュなし。問題はlexerの実装で、ストリームから文字を取り出すときに、lexer側で泥臭く1文字のbyte数を判定している。1文字が2byteで済まないutf8を同じように実装すると、送られてきたパッチのように、さらに泥臭いソースができあがる(あれはあれで最小限度の変更なので、方針としては正しい)。出来る限り、文字列/ストリームクラス側で隠蔽したいところである。
ctow使用場所リスト:
- libkawari/
- kawari_code.cpp: TKVMCodeString::DisCompile()
- kawari_codeexpr.cpp: TKVMExprCodeMATCH::Evaluate()
- kis/
- kis_communicate.cpp: KIS_matchall::Function()
- kis_split.cpp: tokenizer
- kis_string.cpp:
- KIS_substr::Function()
- KIS_length::Function()
- KIS_match::Function()
- KIS_rmatch::Function()
- KIS_match_at::Function()
- KIS_char_at::Function()
- KIS_sub::Function()
- KIS_gsub::Function()
- KIS_reverse::Function()
- KIS_tr::Function()
- KIS_compare::Function()
iskanji1st使用場所リスト:
- libkawari/
- kawari_lexer.cpp: いろいろ
- kis/
- kis_escape.cpp: KIS_escape::Function()
- kis_substitute.cpp: KIS_toupper::Function()
- kis_substitute.cpp: KIS_tolower::Function()
うーん。やっぱりメモリキャッシュは要らないか。この程度だったら、データサイズが2倍になったとて、32bitのCPUなら、処理スピードには全くダメージを食いそうにない。データ転送量にしたって、1メッセージを処理する時のデータ移動なんて、せいぜい1KB程度でしょ。現状に対して遅くならないなら、それで満足しなければ。
仕方ない、ctow/wtoc的なものは残すことにしよう。ただし、iskanji1st()やlang.moreBytes()は撲滅する方向で。