Search Non ASCII with bytes
ASCII Compatible な encoding の文字列に、ASCII 文字以外が含まれているかどうか検索するという問題。Ruby においては ASCII のみの文字列は ASCII 互換 encoding の文字列と結合できるので重要な問題です。
普通に書くと以下のようになるでしょうか。しかし、これでは 1000 文字を 100 万回調べるのに 160 秒ほどかかってしまいました。
int search_nonascii_bytes(const char* p, const char *e) { for (; p < e; ++p) { if (!isascii(*p)) return p; } return NULL; }