もきもき3D

アクセスカウンタ

zoom RSS 文字種判定処理、is〜()

<<   作成日時 : 2010/10/18 10:10   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

ctype.hのisupperとかisdigitとかのメモ。
マルチバイト関係は無視。1byte前提。

 基本的な動作は、文字と対になるbyteの配列を参照する(msvcrtの_pctype[]はshortの配列ぽい)。
 byteにはビットフラグとしてbit数分だけ種別を格納出来る(ビットマスクで取り出せる)、と。
 ascii専用でchar hoe[128]の俺種別を作るのもあり。

速度的なこと。

 1) crtの関数表記そのまま。
 2) crtの(_pctype[c]&MASK)。 非関数。
 3) crtの_isctype(c, MASK)。
 4) 用途を限定し、MASK無しで俺配列を参照するもの。 (2の亜種。 非関数。 配列は同一関数orモジュール内。
 5) (4)を関数化した物。 配列はstaticで関数内に持つ。
 6) if-elseの関数。

 一番コストの高そうなxdigitの場合、こんな感じになった。 対象文字列は適当に作った物。 数学的なランダムさとかは知らね。
   速 (4) < (2) << (1)(6) << (5) << (3) 遅

 (4)と(2)は1割程度、(2)と(1)は倍、(1)と(5)はさらに倍、(5)と(3)はさらに倍。
 (4)と(3)では10倍近く違った。

 

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
文字種判定処理、is〜() もきもき3D/BIGLOBEウェブリブログ
文字サイズ:       閉じる